7

我想知道是否有人可以解释 Haskell websocket 库之间的差异以及它们如何与 Yesod 一起工作。

我要介绍的两个主要示例是Network.Websockets 的本教程wai websockets 包

我一直无法为 wai 包找到一个好的示例或教程。既然yesod用的是wai,那它比单纯的网络有什么优势呢?它是用来代替 Network.Websockets 还是与 Network.Websockets 结合使用?

我看过一些例子,但我无法理解它们是如何真正融入 yesod 环境的。如果有人可以在 Yesod 中解释 websocket 与处理程序和 IO 等的关系,那就太好了。

注意:我已经看过这个问题这个问题,但我不明白如何应用它们,因为它们实际上并没有解释 websockets 适合 Yesod 的位置。

4

2 回答 2

7

Yesod websockets 现在可用。“cabal install yesod-websockets”获取并安装包。您可以在 Michael Snoyman 的 2014 年 3 月 9 日博客http://www.yesodweb.com/blog/2014/03/wai-yesod-websockets上阅读有关它的信息。

于 2014-03-30T20:34:07.537 回答
4

事实上,websocket 超出了正常请求/响应对的范围。因此,普通的 Yesod 处理程序不能简单地开始使用 websockets。那将是理想的,也许我们将来会添加这种支持,但我还没有想出办法来做到这一点(非常欢迎想法/建议/讨论!)。

同时,集成websockets的方式是下拉一层抽象,直接使用wai-websockets和Warp。您链接的答案来描述如何完成这项工作。

我不确定您的要求是什么,但 eventsource 更适合现有的请求/响应范例,并且 yesod-eventsource 包可以轻松与 Yesod 集成。因此,如果这满足您的要求,您可能需要检查一下。(Eventsource 的另一个优点是它可以与 HTTP 反向代理一起正常工作。)

更新这个答案不再准确;请参阅大卫的答案以获取更新信息。

于 2014-03-02T06:37:59.190 回答