rails异步通信和xhr轮询

时间:2010-10-20 17:06:57

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

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

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

我已经在Python中编写了客户端协议的快速实现。事实上,完整的协议由我组成(服务器是用JavaScript编写的),所以我可以完全改变协议。但是,由于问题的性质,不能改变异步性质。

此外,我需要XHR轮询/ WebSockets才能将异步更改推送到浏览器。那有宝石/ howto /教程吗?我不能只是将请求设置为睡眠(资源!)。

如果您想了解有关背景的更多信息: Rails应用程序是一个辅助功能工具。它与之通信的服务实际上是一个加载和呈现网页的Firefox加载项。异步性质来自(i)帧,弹出窗口(window.open()window.alert(),...),DOM树的动态更改,必须传递给Rails应用程序,重定向(如之后)我需要使用JRuby,因为我需要使用Jena(Java)框架进行RDF处理。

2 个答案:

答案 0 :(得分:0)

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

在ruby中,Event Framework是EventMachine,瘦服务器使用它。您可以使用rack :: middleware创建一些websocket并使用它。

答案 1 :(得分:0)

看看Juggernaut 2,它确实这样做(它也使用节点)。我正在使用它将消息从我的服务器推送到所有连接的客户端,它运行良好。实现是轻而易举的(尽管自述文件在某些​​事情上有点不清楚),知道你是否需要任何帮助。

相关问题