【发布时间】: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) 框架、弹出窗口(@987654321@、window.alert()、...)、必须与 Rails 应用程序通信的 DOM 树的动态更改、重定向(例如在论坛中摆姿势后) ) 等。我需要使用 JRuby,因为我需要使用 Jena (Java) 框架进行 RDF 处理。
【问题讨论】:
标签: ruby-on-rails ajax asynchronous xmlhttprequest long-polling