我正在使用jruby on rails编写应用程序。部分应用程序从网页启动长时间运行的进程。在某些情况下,长时间运行的过程可能持续20分钟,但在大多数情况下,在时间方面会比网页响应更长。如果用户关闭浏览器,我还希望继续工作。长时间运行的进程将在数据库运行时向其添加记录。
我想在网页上的数据库中提供插入的可视化指示,我更愿意使用Web套接字,而不是轮询数据库以进行插入。
我正在考虑使用队列处理程序向resque队列发送消息,以确保在用户关闭浏览器时完成作业。队列处理程序将执行对数据库的插入。
我在考虑使用EM-WebSocket作为我的websocket服务器。
我遇到的问题是:
如何在resque流程和EM-WebSocket流程之间进行通信?我想以某种方式将新插入的细节从resque进程传递到数据库,以便与浏览器通信的EM-WebSocket实例?
任何人都解决了这样的问题或任何想法我怎么做?
答案 0 :(得分:1)
我实际上正在制作一个让这非常简单的宝石。现在它很裸露,但确实有效。 https://github.com/KellyMahan/RealTimeRails
它运行一个事件机器服务器来监听更新,并使用em-websockets将这些更新发送到浏览器。
这意味着通过after_save调用来监视活动记录更新,该调用告诉事件 - 机器服务器它具有带有id的模型的更新。然后,它将模型和id与特定通道匹配,以将消息发送到Web套接字服务器上的连接。当浏览器收到更新通知时,会进行ajax调用以检索最新结果。
仍在进行中,但它可以帮到你。