Javascript Firefox没有';连接错误时是否立即关闭WebSocket?
我有这个演示代码:Javascript Firefox没有';连接错误时是否立即关闭WebSocket?,javascript,firefox,websocket,Javascript,Firefox,Websocket,我有这个演示代码: <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> </head> <body onload="init()"> <script type="text/javascript">
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body onload="init()">
<script type="text/javascript">
function init() {
this.ws = new WebSocket("ws://localhost:1234");
console.log("opening");
// on close, display message and try to reopen
this.ws.onclose = function (evt) {
console.log("closed");
}
}
</script>
</body>
</html>
函数init(){
this.ws=newwebsocket(“ws://localhost:1234”);
控制台日志(“打开”);
//关闭时,显示消息并尝试重新打开
this.ws.onclose=函数(evt){
控制台日志(“关闭”);
}
}
连接到不存在的websocket终结点的。我预计这基本上会立即出错,但在Firefox中,打印“打开”和打印“关闭”之间的时间超过一分钟:
这是预期的行为,还是可以将其配置为更快超时?在Chrome中,连接错误会立即消失:
找到了。这是符合RFC 6455的行为。每个补丁最多使用60秒的指数回退。不幸的是,我认为这意味着自动重新连接到Firefox中的websocket端点已中断。我使用的是Firefox 71.0(64位),它会立即写入错误/关闭连接(与Chrome中的行为相同)。。我是LinuxMint上的Firefox71(64位),在MacBookPro Catalina 10.15.2上运行这个程序。对我来说,它总是花费>60秒。标记说明:这是超级糟糕的JS。您正在编写现代HTML和JS:不要在HTML元素上使用任何
。(1) 不要对脚本标记使用type=“text/javascript”:您使用的是HTML5:
script`默认为javascript。(2) 使您的JS成为实际的文件,以便(3)您可以使用
。这将与其他内容并行加载源代码,但只有在解析完整个文档后才能运行它。然后将该
放在head元素中。现在我们有了async
和defer
,不要再把JS放在你的身体里了。另外:
。再一次:HTML5@Mike“Pomax”Kamermans感谢您提供的宝贵信息,但(1)这有什么帮助?(2) 非常确定OP刚刚提供了演示/示例,作为用于测试的“最低分母”类型的代码…@gct Linux Mint使用的是哪个桌面?我可以快速启动虚拟机进行测试。。