【问题标题】:Play Framework 2.2.0 [scala] - WebSocket.async vs WebSocket.using[T]Play Framework 2.2.0 [scala] - WebSocket.async 与 WebSocket.using[T]
【发布时间】:2013-10-19 19:09:40
【问题描述】:

似乎找不到任何关于此的文档,但看到一些示例在操作中使用 WebSocket.async 作为其返回类型,而其他示例则使用 WebSocket.using[String]。

是否有关于何时使用哪个的文档?我了解 Websocket.using[String] 表示进出此操作的消息类型为字符串类型。那么使用 WebSocket.async 到底有什么区别?主要关心的是何时使用哪个以及为什么使用。

【问题讨论】:

    标签: scala playframework websocket playframework-2.2


    【解决方案1】:

    看看他们各自的签名:

    def using[A](f: RequestHeader => (Iteratee[A, _], Enumerator[A]))(implicit frameFormatter: FrameFormatter[A]): WebSocket[A]
    def async[A](f: RequestHeader => Future[(Iteratee[A, _], Enumerator[A])])(implicit frameFormatter: FrameFormatter[A]): WebSocket[A]
    

    可能有点过分,让我们删除返回类型和隐式参数列表,因为它们是相同的:

    def using[A](f: RequestHeader => (Iteratee[A, _], Enumerator[A]))
    def async[A](f: RequestHeader => Future[(Iteratee[A, _], Enumerator[A])])
    

    现在更容易发现差异。 async 接受的回调返回 Future,而 using 则不能。 async 在您使用异步库时很有用,例如Akka,向某个actor发送消息会产生Futureusing 应该与同步库一起使用。我希望这是有道理的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 2013-10-03
      相关资源
      最近更新 更多