【问题标题】:Which Websockets library to use with Yesod?Yesod 使用哪个 Websockets 库?
【发布时间】:2014-04-02 22:00:25
【问题描述】:

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

我要介绍的两个主要示例是 this tutorial for Network.Websocketsthe wai websockets package

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

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

注意:我见过 this questionthis question,但我不明白如何应用它们,因为它们实际上并没有解释 websockets 在 Yesod 中的位置。

【问题讨论】:

    标签: haskell websocket yesod haskell-wai


    【解决方案1】:

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

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

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

    更新 这个答案不再准确;有关更新信息,请参阅 David 的回答。

    【讨论】:

    • eventsource 看起来很不错!我正在使用游戏,所以从技术上讲,我正在做的是双向的,但我可以只使用 POST 来获取客户端->服务器消息。有没有关于如何使用 Yesod.EventSource 的例子?我为 wai-eventsource 找到了很多,但为 yesod 包找到了很多。谢谢!
    • 这里有一个例子:github.com/snoyberg/yesod-devel-beta/blob/master/Yesod/Devel/…。但是 yesod-eventsource 实际上只是 wai-eventsource 之上的一个非常薄的层,因此大多数示例应该对两者都有意义。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 2017-09-01
      • 2014-01-23
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      相关资源
      最近更新 更多