我们正在尝试调试Chromium的一个问题(发生在Chrome、Edge、Brave中),它有时会达到无法打开特定主机的WebSocket的状态。
我们可以在控制台日志中看到,它正在尝试打开套接字,但它从未打开过连接。它失败,错误为1006。在新选项卡和新窗口中也会发生同样的情况。在浏览器重新启动或使用匿名选项卡后,该行为将消失。
服务器上没有HTTP升级请求,连接在chrome dev工具中也不会显示为WebSocket。我们没有太多其他的东西可以继续了。对于我们可以尝试调试这个问题有什么建议吗?
发布于 2020-07-07 14:27:59
我尝试用MS Edge ( Chrome )版本83.0.478.58和Google Chrome版本83.0.4103.116测试web插座
在我的测试中,这两款Chromium浏览器都运行得很好,没有1006错误。
下面是测试代码:
<!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>
参考资料:
请尝试检查浏览器的安全设置,并确认您正在尝试使用安全连接进行连接。
我发现1006是一个特殊的代码,意味着连接被浏览器实现异常(本地)关闭。
我建议您可以查看WebSocket.onerror(evt)以获取有关该错误的更多详细信息。
有帮助的线程链接:
getting the reason why WebSockets closed with close code 1006
如果有更多信息,您可以尝试向我们提供可能有助于缩小问题范围的信息。
发布于 2021-04-21 18:16:30
在2020年中,我在Brave (但不是Chrome)中观察到了完全相同的症状(不确定错误代码)……这是一个持续不断的问题。但从那时起,自2021年1月以来,几乎没有发生过...除了上周(2021年4月),这种情况再次发生(在Brave)。
其他人有没有注意到这个问题仍然时不时地存在?或者可能是一个新的bug,类似但更罕见...
完全相同的行为,套接字不会重新连接,除非匿名或在浏览器重新启动后。
发布于 2021-08-10 17:44:20
我们一直面临着这个问题,Websocket的升级请求永远不会到达服务器,即使网络检查选项卡显示请求已被触发。在我们切换到Chrome之前,再多的刷新或新的标签也无济于事。这个问题是间歇性的,已经变得不可能调试,但尽管如此,我们的用户仍然报告由于未连接的websocket而出现无限加载条。
我使用chrome://net-exports捕获网络日志并在net-export viewer上查看,唯一一次我可以捕获该问题的日志时,我注意到浏览器只尝试IPv6地址,而不尝试IPv4地址。(当我们的服务器甚至没有服务器时)
让Brave或Chromium团队参与进来是不是很谨慎?有没有人找到了具体的重现步骤?
https://stackoverflow.com/questions/62755998
复制相似问题