我想定期尝试打开 websocket 连接,直到它成功。所以我每 5 秒尝试一次,它最初似乎可以工作大约一分钟左右。即在禁用服务器的情况下,尝试连接,然后立即关闭,将 readyState 设置为 3,然后 5 秒后,再次尝试,另一个相同的响应。但是一两分钟后,它不再关闭连接,它只是挂在连接状态(readyState==0)。
function wsConnect()
{
console.log("trying to connect...");
var socket = new WebSocket("wss://blahblah.com");
socket.onopen=function(){console.log("open");};
socket.onerror=function(){console.log("error");};
socket.onclose=function(msg){console.log("close");};
setTimeout(function(){console.log("RS:"+socket.readyState);socket.close();wsConnect();},5000);
}
有趣的是,如果我随后启动服务器,它会被几十个连接击中,大概所有导致 readyState 0 的连接都排队了。有什么方法可以完全粉碎 kill 破坏 readystate 0 连接?关不上,因为没开。
或者,我如何定期进行连接尝试,以允许我在服务器可用时进行连接,但又不会在我想要的只是一个连接时用大量连接轰炸服务器?
浏览器:铬
一旦它开始以 readystate 0 响应,即使是页面刷新也无法修复它。只有进入一个全新的域然后再返回它似乎会重置。