HTML5 Server sent events and multiple clients (wit

2019-08-18 07:06发布

我有一个用例的,我想知道,如果HTML5的服务器发送的事件是合适的。

多个客户端(JavaScript和HTML5的浏览器)连接到Web服务器(与Java EE后端)。 每个客户端可以寻找一个不同的观点在任何时间,这取决于什么是他们感兴趣的对象。

我的问题是:如何让多个客户端(在不同视图)先进的日期发生在服务器端更新, 而不泛滥的所有客户端上的所有视图的所有更新?

我需要考虑的要点是:

  1. 许多客户可能有兴趣相同的事件。 如果两个客户端都在看相同的观点,他们必须得到相同的事件。
  2. 事件被发送到客户端取决于认为客户端是目前。
  3. 有些客户可能不感兴趣的任何事件(即他们可能观看静态数据)
  4. 一个给定的客户端可以动态地改变他们的兴趣。 为前:关闭视图1和开放的视图2。
  5. 一个客户端可以有兴趣在多个事件频道(例如:两个动态变化的观点可以是单个页面的一部分)。
  6. 我可以指定只与上证所完全支持的浏览器。
  7. 只会有一个最大随时连接到服务器的100个客户(浏览器)的。 所以,我可以为每个客户端的多个连接开放(上证)的奢侈品。

我已搜查SO /谷歌的SSE并且不可能(还)获得生产质量可靠的软件解决方案。 我不想再回到老彗星技术,充分发掘SSE之前。

是SSE(本身),能够满足这些需求的? 我期待到大气的权利,但我不希望诉诸一些填充工具模仿SSE,决定SSE不会是本身并不足以前。

我打算做的,如果这是不可能的:
该服务器可以播放所有事件到所有客户端,让客户看着办吧。 这意味着,很多不必要的流量从服务器到客户端和复杂的客户端代码。

Answer 1:

除非你可以针对特定的一组最新的浏览器,你将永远有支持某种回退。 气氛看起来像一个很好的解决方案。

至于发送正确的事件到正确的客户:跟踪客户和他们在任何一个Session对象的喜好(大气的检查能支持的会话)或您自己的地图。 它看起来像这里列出您可以创建多个气氛广播会话: http://blog.javaforge.net/post/32659151672/atmosphere-per-session-broadcaster

免责声明:我从来没有这样使用自己。



Answer 2:

你可以做的是通过GET当你注册事件发送参数EventSource 。 唯一的问题在于,在点#4,为你应该关闭连接并重新注册该事件。

我想,我和它工作得很好。



文章来源: HTML5 Server sent events and multiple clients (without using Comet)