【问题标题】:rails asynchronous communication and xhr pollingrails异步通信和xhr轮询
【发布时间】:2010-10-20 17:06:56
【问题描述】:

我需要编写一个 Rails 应用程序 (JRuby),它在后台与另一个服务进行异步通信。每个浏览器会话需要一个连接。 (它实际上不需要是一个开放的 TCP 连接,但我需要在会话结束后释放资源。)与后台服务的通信不是严格的请求 - 响应。任何时候都可以从服务向 Rails 应用发送消息。

我还需要实现协议。我该怎么做呢? Ruby on Rails 是否有异步框架(例如 Twisted 或 Node.js)?我只需要一些起点。

我已经用 Python 编写了客户端协议的快速实现。实际上完整的协议是我自己编的(服务器是用JavaScript写的),所以我可以完全改变协议。但是,由于问题的性质,无法改变异步性质。

我还需要 XHR 轮询/WebSockets 以便将异步更改推送到浏览器。是否有针对此的 gem/howto/tutorial?我不能只将请求设置为睡眠(资源!)。

如果您想了解更多有关背景的信息: Rails 应用程序是一个可访问性工具。它与之通信的服务实际上是一个加载和呈现网页的 Firefox 插件。异步特性来自 (i) 框架、弹出窗口(@98​​7654321@、window.alert()、...)、必须与 Rails 应用程序通信的 DOM 树的动态更改、重定向(例如在论坛中摆姿势后) ) 等。我需要使用 JRuby,因为我需要使用 Jena (Java) 框架进行 RDF 处理。

【问题讨论】:

    标签: ruby-on-rails ajax asynchronous xmlhttprequest long-polling


    【解决方案1】:

    Ruby On Rails 也是一个异步框架。与瘦服务器。 Node.js 或 Twisted 不是 Asynchrone 框架。只有 Event 框架。

    在 ruby​​ 中,Event Framework 是 EventMachine,thin serverur 使用它。您可以使用 rack::middleware 创建一些 websocket 并使用它。

    【讨论】:

      【解决方案2】:

      看看Juggernaut 2,它就是这样做的(它也使用节点)。我正在使用它将消息从我的服务器推送到所有连接的客户端,并且效果很好。实施起来轻而易举(尽管自述文件在某些​​方面有点不清楚),如果您需要任何帮助,请让我知道。

      【讨论】:

      • 这看起来可能是我需要的。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2012-02-06
      • 2015-04-23
      • 2012-02-24
      • 2011-06-08
      • 1970-01-01
      • 2017-05-21
      • 2012-08-16
      相关资源
      最近更新 更多