与Ruby Web套接字服务器串联排队

时间:2011-10-09 15:23:57

标签: ruby jruby resque eventmachine

我正在使用jruby on rails编写应用程序。部分应用程序从网页启动长时间运行的进程。在某些情况下,长时间运行的过程可能持续20分钟,但在大多数情况下,在时间方面会比网页响应更长。如果用户关闭浏览器,我还希望继续工作。长时间运行的进程将在数据库运行时向其添加记录。

我想在网页上的数据库中提供插入的可视化指示,我更愿意使用Web套接字,而不是轮询数据库以进行插入。

我正在考虑使用队列处理程序向resque队列发送消息,以确保在用户关闭浏览器时完成作业。队列处理程序将执行对数据库的插入。

我在考虑使用EM-WebSocket作为我的websocket服务器。

我遇到的问题是:

如何在resque流程和EM-WebSocket流程之间进行通信?我想以某种方式将新插入的细节从resque进程传递到数据库,以便与浏览器通信的EM-WebSocket实例?

任何人都解决了这样的问题或任何想法我怎么做?

1 个答案:

答案 0 :(得分:1)

我实际上正在制作一个让这非常简单的宝石。现在它很裸露,但确实有效。 https://github.com/KellyMahan/RealTimeRails

它运行一个事件机器服务器来监听更新,并使用em-websockets将这些更新发送到浏览器。

这意味着通过after_save调用来监视活动记录更新,该调用告诉事件 - 机器服务器它具有带有id的模型的更新。然后,它将模型和id与特定通道匹配,以将消息发送到Web套接字服务器上的连接。当浏览器收到更新通知时,会进行ajax调用以检索最新结果。

仍在进行中,但它可以帮到你。