【问题标题】:Network Error 12152: WebSockets in Edge and IE 11网络错误 12152:Edge 和 IE 11 中的 WebSockets
【发布时间】:2025-12-23 00:25:12
【问题描述】:

我有一个使用 websockets 安全 (WSS) 的站点,并且在 chrome 中运行良好。

在 IE 和 Edge 中进行测试也可以,但是在浏览器控制台中我得到Network Error 12152,如果实施,这也会触发websocket.addEventListener("error",function(){})

实际上一切正常,我只是收到了这个似乎没有破坏任何东西的错误。

从浏览器端关闭套接字时触发错误

EDGE 中的标题

更多信息:我使用的代码示例

//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 服务器)一起使用,而不是我的。没有错误。但是在断开连接时连接到我的会出现错误。

可能是什么问题?

谢谢

【问题讨论】:

  • 这与 ajax 帖子的@JaromandaX 无关,您最不想要的是在设置 websocket 时关闭套接字连接......而 websocket 与 ajax 完全不同。
  • 是的,很抱歉

标签: javascript internet-explorer websocket microsoft-edge


【解决方案1】:

查看 Microsoft 知识库文章,您没有在连接设置中返回预期的响应/标头

来自microsoft knowledge base

12152 ERROR_HTTP_INVALID_SERVER_RESPONSE

无法解析服务器响应。

如果您查看 Server Handshake 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=

因此,我建议您检查您的标头并查看您在握手时发送了哪些响应,以便您与协议保持一致。

【讨论】:

  • 标题对我来说看起来不错。如果不正确,我在 C# 中的 websocket 服务器将终止连接。我会在问题中添加标题的屏幕截图
  • 是的,标题看起来不错,异常消息状态和跟踪日志是什么?它究竟在什么时候触发?握手时,握手后?在接收握手?在推送第一个数据时?您用来建立连接的代码是什么?
  • 查看触发错误的时机。这是从浏览器端关闭连接的时候。我将如何调出跟踪日志?我还将提供我如何操作的示例代码。
  • 刚发现我从另一个站点收到同样的错误。见问题。
  • 它可能需要边缘的原因代码/即*.com/questions/18803971/… 如何获取错误。尝试通过执行console.log(event); 并在控制台中查看属性和输出来分析事件对象。你碰巧使用这个库吗? github.com/websockets/ws/tree/master/examples
【解决方案2】:

我已经修复了 IE 浏览器中的相同错误。检查websocket首字母的大小写。

  • 非IE浏览器:

    Upgrade: **w**ebsocket

  • IE浏览器:

    Upgrade: **W**ebsocket

【讨论】: