HTML5 Server发送事件和多个客户端(不使用Comet)

我有一个用例,我想知道HTML5的Server-sent-Events是否合适.

多个客户端(Javascript HTML5浏览器)连接到Web服务器(使用Java EE后端).每个客户可以随时查看不同的视图,具体取决于他们感兴趣的对象.

我的问题是:
如何使多个客户端(在不同的视图上)保持最新的服务器端更新,而不会使所有客户端上的所有更新都充斥所有客户端?

我需要考虑的重点是:

>许多客户可能对同一事件感兴趣.如果两个客户端正在查看相同的视图,那么它们必须获得相同的事件.
>要发送到客户端的事件取决于客户端当前所在的视图.
>某些客户可能对任何事件都不感兴趣(即他们可能正在查看静态数据)
>给定的客户可以动态地改变他们的兴趣.例如:关闭View1并打开View2.
>客户可能对多个事件通道感兴趣(例如:两个动态变化的视图可能是单个页面的一部分).
>我只能定位完全支持SSE的浏览器.
>任何时候最多只能有100个客户端(浏览器)连接到服务器.所以,我可以拥有每个客户端打开多个连接(对于SSE)的奢侈.

我搜索了SO / Google的SSE,但却无法获得可靠的生产质量软件解决方案.在完全探索SSE之前,我不想回到旧的Comet技术.

SSE(本身)是否能够满足这些要求?
我现在正在研究Atmosphere,但我不想诉诸于模仿SSE的一些polyfill,然后才决定SSE本身就不够了.

如果不可能,我打算做什么:
服务器可以向所有客户端广播所有事件,让客户端弄明白.这意味着,从服务器到客户端和复杂的客户端代码会产生大量不必要的流量.

最佳答案
除非您可以定位一组特定的最新浏览器,否则您将始终必须支持某种后备. Atmosphere看起来是一个很好的解决方案.

至于向正确的客户发送正确的事件:在Session对象(检查Atmosphere配置为支持会话)或您自己的Map中跟踪客户端及其首选项.看起来您可以在Atmosphere中创建多个会话广播,如下所述:http://blog.javaforge.net/post/32659151672/atmosphere-per-session-broadcaster

免责声明:我自己从未使用过这个.

转载注明原文:HTML5 Server发送事件和多个客户端(不使用Comet) - 代码日志