2013-10-11 70 views
3

似乎無法找到關於此的任何文檔,但看到在行動作爲他們的返回類型使用WebSocket.async和其他使用一些例子的WebSocket 。採用[字符串]。播放框架2.2.0 [階] - WebSocket.async VS WebSocket.using [T]

是否有文件的任何地方何時使用哪個?我明白Websocket.using [String]表示進入和離開這個動作的消息的類型是String類型的。那麼使用WebSocket.async究竟有什麼不同?主要關心的是何時使用哪些以及爲什麼。

回答

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很有用,例如阿卡,發送消息給一些演員產生Futureusing應與同步庫一起使用。我希望這是有道理的。

+0

壓根就,謝謝。 – randombits

+0

非常簡潔,謝謝! –