如何最大化服务器发送的事件打开连接?

时间:2019-04-10 10:16:55

标签: java spring websocket notifications server-sent-events

我正在构建通知服务,以便用户获得有关其活动的通知。我只需要服务器到客户端的通知(一种方式)。我探索了围绕它的多个选项,例如轮询,WebSocket,SSE。因为,与Websocket不同,SSE占用的资源较少,并且不需要HTTP协议之外的其他协议进行通信。我选择了SSE。但是,对此有一个限制。它最多可以支持6个Open连接。我想这与同时访问通知的用户数量有关。即最多6个用户可以同时访问该通知。

我如何设法最大化打开的连接?还是使用Websocket代替SSE还是更好? 如果我误解了这个概念,请原谅我。 我很高兴知道有关此的一些信息。

2 个答案:

答案 0 :(得分:0)

您对最大连接数的理解是错误的。它与客户端可以打开的主机连接数有关(请参见this)。每个浏览器(版本)的数量不同。

因此,当您使用Chrome浏览器并在网站上打开网页时,可以使用max。 6个连接,用于从服务器检索数据。

在SSE的服务器端,将同一事件发送给多个用户没有限制。

注意::如果您仍然需要支持IE,则不支持现成的SSE,因此您需要一个polyfill或其他解决方案。

答案 1 :(得分:0)

如其他答案所述,大多数浏览器可以打开大约6个HTTP / 1.x与同一主机的连接。因此,如果您使用1个SSE连接,它将可能保持5个HTTP / 1.x连接。 这仅适用于HTTP / 1.x

使用HTTP 2.x,与同一主机的连接是多路复用的 :因此,从理论上讲,您可以在同一时间发送尽可能多的HTTP请求或您可以根据需要打开任意数量的SSE连接,从而绕过6个连接的限制。