2014-03-01 43 views
7

我想知道是否有人可以解釋Haskell websocket庫和他們如何與Yesod一起工作的區別。與Yesod一起使用哪些Websockets庫?

我要走的兩個主要例子是this tutorial for Network.Websocketsthe wai websockets package

我一直無法找到一個很好的例子或wai包教程。由於yesod使用wai,它對簡單網絡有什麼優勢?它是用來代替還是與Network.Websockets結合使用?

我見過一些例子,但我一直無法理解它們是如何真正適合yesod環境的。如果有人可以解釋在Yesod中websocket如何與處理程序和IO等相關,那就太好了。

注意:我已經看到this questionthis question但我不明白如何應用它們,因爲它們實際上沒有解釋適用於Yesod的websocket的情況。

回答

4

事實是,websocket不屬於正常請求/響應對的範圍。因此,正常的Yesod處理程序是而不是能夠簡單地開始使用websocket。這將是理想的,也許我們會在未來增加這種支持,但我還沒有想出一種方法來實現它(非常歡迎想法/建議/討論!)。

與此同時,整合websockets的方法是下拉一層抽象並直接使用wai-websockets與warp。您鏈接的答案描述如何完成。

我不確定你的要求是什麼,但eventsource更適合現有的請求/響應範例,並且yesod-eventsource包使其易於與Yesod集成。所以如果那符合你的要求,你可能想要檢查出來。 (Eventsource還具有它可以正確使用HTTP反向代理的優勢。)

UPDATE此答案不再準確;請參閱David的最新信息。

+0

eventsource看起來相當不錯!我正在使用遊戲,因此技術上我所做的只是雙向的,但我可以使用POST作爲客戶端 - >服務器消息。有沒有任何如何使用Yesod.EventSource的例子?我已經找到了很多wai-eventsource,但是對於yesod軟件包來說更少。謝謝! – jmite

+0

這裏有一個例子:https://github.com/snoyberg/yesod-devel-beta/blob/master/Yesod/Devel/Status.hs#L102。但是yesod-eventsource實際上只是wai-eventsource之上的一個非常薄的層,所以大多數示例都應該適用於這兩者。 –

+0

非常好,謝謝! – jmite

相關問題