首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在重启Chromium之前,WebSocket不会连接到特定主机

在重启Chromium之前,WebSocket不会连接到特定主机
EN

Stack Overflow用户
提问于 2020-07-06 20:22:38
回答 3查看 400关注 0票数 3

我们正在尝试调试Chromium的一个问题(发生在Chrome、Edge、Brave中),它有时会达到无法打开特定主机的WebSocket的状态。

我们可以在控制台日志中看到,它正在尝试打开套接字,但它从未打开过连接。它失败,错误为1006。在新选项卡和新窗口中也会发生同样的情况。在浏览器重新启动或使用匿名选项卡后,该行为将消失。

服务器上没有HTTP升级请求,连接在chrome dev工具中也不会显示为WebSocket。我们没有太多其他的东西可以继续了。对于我们可以尝试调试这个问题有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2020-07-07 14:27:59

我尝试用MS Edge ( Chrome )版本83.0.478.58和Google Chrome版本83.0.4103.116测试web插座

在我的测试中,这两款Chromium浏览器都运行得很好,没有1006错误。

下面是测试代码:

代码语言:javascript
复制
 <!DOCTYPE html>
  <meta charset="utf-8" />
  <title>WebSocket Test</title>
  <script language="javascript" type="text/javascript">

  var wsUri = "wss://echo.websocket.org/";
  var output;

  function init()
  {
    output = document.getElementById("output");
    testWebSocket();
  }

  function testWebSocket()
  {
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) { onOpen(evt) };
    websocket.onclose = function(evt) { onClose(evt) };
    websocket.onmessage = function(evt) { onMessage(evt) };
    websocket.onerror = function(evt) { onError(evt) };
  }

  function onOpen(evt)
  {
    writeToScreen("CONNECTED");
    doSend("WebSocket rocks");
  }

  function onClose(evt)
  {
    writeToScreen("DISCONNECTED");
  }

  function onMessage(evt)
  {
    writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>');
    websocket.close();
  }

  function onError(evt)
  {
    writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data);
  }

  function doSend(message)
  {
    writeToScreen("SENT: " + message);
    websocket.send(message);
  }

  function writeToScreen(message)
  {
    var pre = document.createElement("p");
    pre.style.wordWrap = "break-word";
    pre.innerHTML = message;
    output.appendChild(pre);
  }

  window.addEventListener("load", init, false);

  </script>
<body>
  <h2>WebSocket Test</h2>

  <div id="output"></div>
</body>
</html>

参考资料:

Web socket echo test

请尝试检查浏览器的安全设置,并确认您正在尝试使用安全连接进行连接。

我发现1006是一个特殊的代码,意味着连接被浏览器实现异常(本地)关闭。

我建议您可以查看WebSocket.onerror(evt)以获取有关该错误的更多详细信息。

有帮助的线程链接:

getting the reason why WebSockets closed with close code 1006

如果有更多信息,您可以尝试向我们提供可能有助于缩小问题范围的信息。

票数 3
EN

Stack Overflow用户

发布于 2021-04-21 18:16:30

在2020年中,我在Brave (但不是Chrome)中观察到了完全相同的症状(不确定错误代码)……这是一个持续不断的问题。但从那时起,自2021年1月以来,几乎没有发生过...除了上周(2021年4月),这种情况再次发生(在Brave)。

其他人有没有注意到这个问题仍然时不时地存在?或者可能是一个新的bug,类似但更罕见...

完全相同的行为,套接字不会重新连接,除非匿名或在浏览器重新启动后。

票数 1
EN

Stack Overflow用户

发布于 2021-08-10 17:44:20

我们一直面临着这个问题,Websocket的升级请求永远不会到达服务器,即使网络检查选项卡显示请求已被触发。在我们切换到Chrome之前,再多的刷新或新的标签也无济于事。这个问题是间歇性的,已经变得不可能调试,但尽管如此,我们的用户仍然报告由于未连接的websocket而出现无限加载条。

我使用chrome://net-exports捕获网络日志并在net-export viewer上查看,唯一一次我可以捕获该问题的日志时,我注意到浏览器只尝试IPv6地址,而不尝试IPv4地址。(当我们的服务器甚至没有服务器时)

让Brave或Chromium团队参与进来是不是很谨慎?有没有人找到了具体的重现步骤?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62755998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档