我正在开发一个应用程序,它使用 SockJS 来更新连接到服务器的其他应用程序的一些通用数据。问题来了,当 我尝试在两个浏览器选项卡中打开它,因为只有其中一个实现了连接,而另一个则一直等待直到超时。
谁能解释一下为什么会发生这种情况?有什么解决办法吗?
在服务器上,我使用 SockJS 的 Spring 实现,但禁用了 WebSocket 传输,因为应用程序服务器不支持它。
最佳答案
对于任何认为这有帮助的人,我最终发现 HTTP/1.1协议(protocol)建议每个域的连接限制为两个连接,因此,浏览器在任何选项卡/窗口/iframe 之间共享这两个连接。因此,当这两个连接被消耗时,所有其他连接/请求都必须等待,直到这两个连接之一被释放。
类似 cometd 的库通过检测多个客户端何时连接并返回到正常轮询来处理此问题。
关于javascript - 无法打开与同一 SockJS 端点的多个连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40658749/