【问题标题】:Real-time bi-directional JSON-RPC communication over HTTP基于 HTTP 的实时双向 JSON-RPC 通信
【发布时间】:2011-06-16 22:18:02
【问题描述】:

我正在构建一个通过 HTTP 接受请求的 JSON-RPC 服务器。我想支持双向通信(客户端和服务器都可以发送请求),具体用例是发布/订阅架构,其中客户端发送subscribe(X) 请求并(几乎)真实接收changed(X) 请求时间。据我所知,有几种方法可以用 HTTP 实现这一点:

  • 长轮询
  • WebSockets
  • 使用基于 cookie 的会话模型轮询调用
  • 流式传输(保持 HTTP 连接打开)
  • 上述部分的组合

我正在寻找的解决方案基于公认的互联网标准(如果可能),可通过网络浏览器使用并且易于在客户端使用。到目前为止,我更喜欢流媒体(Twitter、CouchDB 就是这样做的),但我不确定浏览器和 JSON-RPC 库对它的支持程度。此外,可能还有其他我不知道的方法。

提前谢谢你。

【问题讨论】:

    标签: javascript http streaming comet json-rpc


    【解决方案1】:

    你应该看看JSONRPC-bidirectional。它支持WebSocket、Worker、WebRTC和HTTP上的双向RPC,并且具有高度可扩展性。

    【讨论】:

      【解决方案2】:

      如果有人对 Java 实现感兴趣,我只是写了一个示例应用程序和一篇关于它的博客文章。它使用 Java、Maven、Comet、Bayeux、Spring。 http://jaye.felipera.cloudbees.net/ http://geeks.aretotally.in/thinking-in-reverse-not-taking-orders-from-yo

      【讨论】:

        【解决方案3】:

        我认为你应该看看socket.io 来完成你的任务。如果您想观看作者的此视频,您可以:“Socket.IO Workshop: Guillermo Rauch”。作为客户端在两台服务器上都可以轻松使用。我创建了一个简单的示例pubsub using redis on top of socket.io

        【讨论】:

        • 感谢 socket.io 的链接。我的 HTTP 服务器组件已经存在(在 Erlang 中),但 socket.io 的方法非常鼓舞人心。
        【解决方案4】:

        据我所知,FF、Chrome(存在需要应用程序/八位字节流的数据类型或前奏才能工作的缓冲问题)和 IE8(通过一点 XDomainRequest)支持流式传输。我不知道歌剧。

        我真的不知道任何彗星行业标准,Bayeux 可能是最接近的。很难看出 facebook/gmail/twitter 是如何做到的,因为所有代码都被混淆了,而且很难找到有关所有浏览器如何处理所有事情的大量信息。

        更困难的是您需要使用专门的服务器,保持这么多连接打开需要线程池等。普通服务器会很快崩溃。

        如果你能让它可靠地工作,这是一个非常强大的设计。

        【讨论】:

        • Tornado 声称可以支持数千个并行连接,并在 FriendFeed(现为 Facebook)上使用。它也是开源的tornadoweb.org
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-06
        相关资源
        最近更新 更多