我正在开发一个 Web 应用程序,该应用程序将任务提交给主/工作系统,该系统将任务分配给一系列工作实例中的任何一个。工作队列主机作为单独的进程运行(完全在单独的机器上),任务通过 HTTP/REST 请求提交给主机。将任务提交到工作队列后,客户端应用程序可以提交另一个 HTTP 请求以获取有关任务的状态信息。
对于我的 Web 应用程序,我希望它提供某种进度条视图,让用户可以了解任务处理的进度。实现这一点的明显方法是使用 AJAX 进度表小部件,该小部件定期轮询工作队列以了解已提交任务的状态。我的问题是,有没有更好的方法可以在没有频繁轮询的情况下实现这一点?
我考虑过让客户端 Web 应用程序打开一个服务器套接字,它可以在该套接字上侦听来自工作主管的通知。我的另一个类似想法是使用 XMPP 或类似的协议来进行状态通知。(当然,master/worker 系统需要更新以提供通知,但我拥有这方面的代码,因此可以自己进行任何必要的更新。)
关于设置这样的通知系统的最佳方式有什么想法吗?所涉及的额外努力是否值得,或者简单的轮询解决方案是否可行?