Scala 重头戏2.3-从异步更改为WebSocket.tryAccept

Scala 重头戏2.3-从异步更改为WebSocket.tryAccept,scala,playframework,Scala,Playframework,我是Scala的新手,所以我认为这可能是一个非常小的问题 我目前正在尝试将chat方法从使用不推荐的WebSocket.async更改为WebSocket.tryaaccept。该应用程序使用在上找到的示例聊天 我在创建该方法所需的复杂Future类型时遇到问题 这是老办法: def chat() = WebSocket.async[JsValue] { request => ChatRoom.join("User: 1") } 新方法: def chat2(

我是Scala的新手,所以我认为这可能是一个非常小的问题

我目前正在尝试将
chat
方法从使用不推荐的
WebSocket.async
更改为
WebSocket.tryaaccept
。该应用程序使用在上找到的示例聊天

我在创建该方法所需的复杂
Future
类型时遇到问题

这是老办法:

  def chat() = WebSocket.async[JsValue] {
    request =>
      ChatRoom.join("User: 1")
}
新方法:

  def chat2() = WebSocket.tryAccept[JsValue] {
    request =>
      try {
        // ChatRoom.join returns (iteratee,enumerator)
        ChatRoom.join("User: 1").map(e => Right(e)) 
      } catch {
        case e: Exception =>
          Left(Ok("Failed")) // Error here
  }
}
我的错误消息:

找到:左[结果,无]
必需:Future[Result,(Iteratee[JsValue,382;],Enumerator[JsValue])]

我不知道我该如何为如此简单的消息创建如此复杂的结果


虽然
ChatRoom.join(“User:1”).map(e=>Right(e))
现在没有显示任何错误,但我不确定这是否是正确的实现

我目前没有在IDE前面,所以我无法完全回答,但它要求的返回类型并不像看上去那么复杂。“要么”是“左”或“右”,就像“选项”是“某些”或“无”一样。因此,它所要求的是一个未来(Websocket.async也应该需要这个未来),它包含一个左[结果]——连接失败案例,或者一个右[(迭代器,枚举器)]——成功案例。假设Chatroom.join返回一个Future[(Iteratee,Enumerator)],映射操作只是将其包装在“Right”中。我要做的第一件事是在将来包装左(Ok(“Failed”)),看看会发生什么。

未来{…}
中包装左返回有效。我以前曾尝试将整个请求包装在一个将来的文件中,但没有成功。谢谢