似乎找不到任何关于此的文档,但看到一些在操作中使用 WebSocket.async 作为其返回类型的示例,以及其他使用 WebSocket.using[String] 的示例。
是否有关于何时使用哪个的文档?我了解 Websocket.using[String] 表示进出此操作的消息类型为字符串类型。那么使用 WebSocket.async 到底有什么区别?主要关心的是何时使用哪个以及为什么。
似乎找不到任何关于此的文档,但看到一些在操作中使用 WebSocket.async 作为其返回类型的示例,以及其他使用 WebSocket.using[String] 的示例。
是否有关于何时使用哪个的文档?我了解 Websocket.using[String] 表示进出此操作的消息类型为字符串类型。那么使用 WebSocket.async 到底有什么区别?主要关心的是何时使用哪个以及为什么。
看看他们各自的签名:
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
返回 a Future
,而using
你不能。async
当您使用异步库时很有用,例如 Akka,向某些参与者发送消息会产生Future
. using
应该与同步库一起使用。我希望这是有道理的。