Ouu*_*iii 24 javascript internet-explorer network-protocols websocket handshake
我一直在用JavaScript实现WebSocket,但我遇到了一个问题:
我的Web应用程序所连接的端点在发送一个封闭的控制框架时没有将其发送回去。
这还不错,因为浏览器会在一段时间后关闭WebSocket连接。
但是需要注意的几件事是:
浏览器只允许同时连接一定数量的WebSocket。
刷新Web应用程序时,将创建一个新的WebSocket。
这会导致IE上的问题:
刷新Web应用程序超过6次时,无法建立WebSocket连接。
如果尚未完全关闭WebSocket,似乎IE不会“删除” WebSocket。奇怪的是,Web套接字的数量似乎从未因刷新或等待而减少。
仅通过关闭浏览器窗口或选项卡将WebSockets的数量重置为0。
我做了一些研究,这是我发现的:
浏览器仅支持同时连接特定数量的WebSocket。
IE支持6个websocket进行连接[链接]
Chrome支持连接255个websocket [link]。
并且socket.onclose()
不会在您执行操作时触发socket.close()
,而是在端点以关闭消息进行响应时调用。 [链接]
IE等待15秒,以便端点发送关闭消息[link]。
Chrome等待60秒钟才能收到响应消息[很抱歉,对此没有链接,通过测试发现了此消息]。
如果未收到响应消息,则浏览器将关闭WebSocket连接,并应发生TimeoutError。
如果我错了请指正我:)
我尝试过使用unbeforeload
与端点的断开连接,希望浏览器在一段时间后关闭连接,但是没有运气。[链接]。
也可能是IE无法在[link]unbeforeload
函数内执行请求的原因。
题:
如果有人想了解更多关于WebSocket协议的信息,这是(我认为)很好的文档[link1] [link2]。
只有刷新IE上的Web应用程序,WebSocket才会被销毁。
如果您在Web应用程序中的页面之间导航,则会创建一个新的WebSocket,但最后一个WebSocket将被破坏。