我正在开发一个应用程序,它使用SockJS来更新连接到服务器的其他应用程序中的一些常见数据。当我尝试在两个浏览器选项卡中打开它时会出现问题,因为只有其中一个实现连接而另一个一直等到超时结束。
¿任何人都可以解释我为什么会这样吗? ¿有什么解决方案吗?
在服务器上我使用SockJS的Spring实现,因为应用程序服务器不支持它,因此WebSocket传输被禁用。
对于发现这有用的人,我最终发现HTTP/1.1协议建议每个域有两个连接的连接限制,因此,浏览器在任何选项卡/窗口/ iframe上共享这两个连接。结果,当这两个连接完成时,每个其他连接/请求必须等待,直到释放了这两个连接中的一个。
像cometd这样的库通过检测多个客户端何时连接并回退到正常轮询来处理这个问题。