假设我有两个应用程序必须在一定程度上协同工作。
必须从 Web 应用程序通知桌面应用程序,并且发送和接收通知之间的延迟必须很短。 (< 10 秒)
有什么可能的方法来做到这一点?我可以考虑以 10 秒的间隔进行轮询,但如果必须通知许多桌面应用程序,那将产生大量流量。在 LAN 上,我会使用 UDP 广播,但不幸的是,这在这里是不可能的......
我很感激你能给我的任何想法。
最佳答案
我认为这里的“最佳实践”将取决于您希望服务的桌面客户端的数量。如果只有一个桌面需要通知,那么轮询可能是一种很好的方法——是的,轮询比基于事件的通知开销更大,但它肯定是最容易实现的解决方案。
如果轮询的开销确实 Not Acceptable ,那么我看到了两个基本的选择:
不过请注意——这两种选择都充满了陷阱。几个亮点:
为了减轻一些担忧,您可以通过引入中间通知服务器来将不可靠的桌面与网络服务器分离——网络服务器可以在某处发布更新,桌面可以在那里轮询/连接/注册以得到通知。为了避免在这里重新发明轮子,这可能涉及某种 MessageQueue 系统……这当然增加了需要维护新中介的复杂性。
同样,所有这些方法可能都相当复杂,所以我想说轮询可能是最好的选择。
关于language-agnostic - 通知非 Web 应用程序有关网页更改的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817167/