Play Framework 2.2.0 [scala] - WebSocket.async vs WebSocket.using [T]

时间:2013-10-11 16:09:42

标签: scala playframework websocket playframework-2.2

似乎无法找到任何关于此的文档,但是在操作中使用WebSocket.async作为其返回类型以及其他使用WebSocket.using [String]的示例。

是否有关于何时使用哪个文档?据我所知,Websocket.using [String]表示进出此操作的消息类型是String类型。那么使用WebSocket.async有什么区别呢?主要关注的是何时使用哪个以及为什么。

1 个答案:

答案 0 :(得分:8)

看看他们各自的签名:

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。当您使用异步库时,Future非常有用,例如Akka,向某个演员发送消息会产生using。 {{1}}应与同步库一起使用。我希望这是有道理的。