我需要编写一个在后台与另一个服务进行异步通信的Rails应用程序(JRuby)。每个浏览器会话需要有一个连接。(它实际上不需要是一个开放的TCP连接,但我需要在会话结束后释放资源。)与后台服务的通信不是严格的请求-响应。在任何时候,都可以从服务向rails应用程序发送一条消息。
我还需要实现协议。我该怎么做呢?Ruby on Rails有没有异步框架(比如Twisted或Node.js)?我只需要一些起点。
我已经用Python编写了客户端协议的快速实现。事实上,完整的协议是由我制定的(服务器是用JavaScript编写的),所以我可以完全更改协议。但是,由于问题的性质,不能更改异步性质。
另外,我需要XHR轮询/WebSockets,以便将异步更改推送到浏览器。有没有关于这个的gem/howto/教程?我不能简单地将请求设置为睡眠(资源!)。
如果您想了解更多背景知识: Rails应用程序是一个可访问性工具。它与之通信的服务实际上是一个加载和呈现网页的Firefox附加组件。异步的本质来自(I)框架,弹出窗口(window.open()
,window.alert()
,...),DOM树的动态变化,必须与Rails应用程序通信,重定向(如在论坛中摆姿势后)等。
发布于 2010-10-21 01:25:25
Ruby On Rails也是一个异步框架。使用瘦服务器。Node.js或Twisted不是异步框架。只有事件框架。
在ruby中,事件框架是EventMachine,瘦服务器可以使用它。您可以使用rack::中间件创建一些websocket并使用它。
发布于 2010-12-08 06:37:11
看看Juggernaut 2,它就是这样做的(它也使用了node)。我正在使用它将消息从我的服务器推送到所有连接的客户端,它工作得很好。实现是轻而易举的(尽管自述文件对某些事情有点不清楚),让我知道你是否需要任何帮助。
https://stackoverflow.com/questions/3980495
复制相似问题