我正在使用jruby on rails编写一个应用程序。应用程序的一部分从网页启动一个长时间运行的进程。在某些情况下,长时间运行的进程可能会持续20分钟,但在大多数情况下,在时间上会超过网页响应。如果用户关闭浏览器,我也希望作业继续。长时间运行的进程将在运行时向数据库添加记录。
我想在网页上给出插入到数据库中的视觉指示,我更喜欢使用web套接字,而不是轮询数据库中的插入。
我正在考虑发送一条消息到一个具有队列处理程序的resque队列,如果用户关闭浏览器,该队列处理程序将确保作业完成。队列处理程序将执行对数据库的插入操作。
我正在考虑使用EM-WebSocket作为我的websocket服务器。
我的问题是:
如何在resque进程和EM-WebSocket进程之间进行通信?我想以某种方式将新插入的详细信息从resque进程传递到数据库中,并传递给一个将与浏览器通信的EM-WebSocket实例。
有没有人解决了这样的问题,或者我该怎么做?
发布于 2011-11-10 23:08:40
实际上,我正在做一个让这件事变得非常简单的宝石。现在它还很空洞,但它确实可以工作。https://github.com/KellyMahan/RealTimeRails
它运行一个事件机器服务器来监听更新,并利用em-websockets将这些更新发送到浏览器。
它的目的是通过一个after_save调用来监视活动记录的更新,该调用告诉事件机器服务器它有一个带有id的模型的更新。然后,它将模型和id与特定通道相匹配,以将消息发送到web套接字服务器上的连接。当浏览器收到更新通知时,它会调用ajax来检索最新的结果。
这仍然是一项正在进行的工作,但它可以帮助你。
https://stackoverflow.com/questions/7704522
复制相似问题