我有一个使用websockets secure(WSS)的网站,并且在chrome中运行良好。
在IE和Edge中的测试也可以在浏览器控制台中使用Network Error 12152
,如果实现,也会触发websocket.addEventListener("error",function(){})
。
一切确实有效我只是得到了这个似乎没有破坏任何东西的错误。
从浏览器端关闭套接字时触发错误
更多信息:我使用的代码示例
//connect via wss then
ws.addEventListener("error",function(event){ // this hits when Socket is closed})
ws.addEventListener("open",function(){
ws.addEventListener("message",function(event){
//do stuff
ws.Close()
})
})
进一步确认问题
我去了https://www.websocket.org/echo.html边缘的网站,它有能力测试websocket连接。我让它连接到我的服务器。这可以毫无问题地打开连接。然而,就像我的代码一样,我遇到了问题。单击断开连接按钮时,此站点也会引发错误。见下图。这是IE / Edge中的错误吗?
我的服务器没有正确断开连接? 我使用上面的网站与默认目的地(他们的websocket服务器),而不是我的。没有错误。但是当断开连接到我的时候会出现错误。
可能是什么问题?
由于
答案 0 :(得分:2)
查看Microsoft知识库文章,您没有回复连接设置中的预期响应/标题
12152 ERROR_HTTP_INVALID_SERVER_RESPONSE
无法解析服务器响应。
如果您查看服务器握手响应部分,请从developper docs of mozilla
当它收到这个请求时,服务器应该发送一个非常奇怪(但仍然是HTTP)的响应,看起来像这样(记住每个标题以\ r \ n结尾并在最后一个之后放一个额外的\ r \ n ):
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
因此,我建议您检查标题,看看您在握手时发送的回复,以便与协议保持一致。
答案 1 :(得分:0)
我在IE浏览器中修复了同样的错误。检查websocket第一个字母的大小写。
非IE浏览器:
Upgrade: **w**ebsocket
IE浏览器:
Upgrade: **W**ebsocket