我有一个用例,如果HTML5的Server-sent-Events适合,我想知道。
多个客户端(Javascript + HTML5浏览器)连接到Web服务器(使用Java EE后端)。每个客户可以随时查看不同的视图,具体取决于他们感兴趣的对象。
我的问题是: 如何使多个客户端(在不同的视图上)保持最新的服务器端更新,没有充斥所有客户端以及所有视图的所有更新?
我需要考虑的重点是:
我搜索过SO / Google搜索SSE并且无法获得可靠的生产质量软件解决方案。在完全探索SSE之前,我不想回到旧的Comet技术。
SSE(本身)是否能够满足这些要求? 我现在正在研究Atmosphere,但我不想诉诸于模仿SSE的一些polyfill,在决定SSE本身不够之前。
如果无法做到,我打算做什么:
服务器可以向所有客户端广播所有事件,让客户端弄明白。这意味着,从服务器到客户端以及复杂的客户端代码会产生大量不必要的流量。
答案 0 :(得分:2)
除非您可以定位一组特定的最新浏览器,否则您将始终支持某种回退。 Atmosphere看起来是一个很好的解决方案。
关于向正确的客户发送正确的事件:在Session对象(检查Atmosphere配置为支持会话)或您自己的Map中跟踪客户端及其首选项。看起来您可以在Atmosphere中创建多个会话广播,如下所示:http://blog.javaforge.net/post/32659151672/atmosphere-per-session-broadcaster
免责声明:我自己从未使用过这个。
答案 1 :(得分:0)
当您使用EventSource
注册活动时,您可以通过GET发送参数。
唯一的问题出在第4点,您应该关闭连接并重新注册事件。
我自己尝试过,效果很好。