【发布时间】:2012-08-08 20:14:22
【问题描述】:
我想定期尝试打开一个 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 开始响应,即使页面刷新也无法修复它。只有进入一个全新的域然后再返回它似乎会重置。
【问题讨论】:
-
欢迎来到堆栈溢出!你用的是什么浏览器?
-
对不起,应该说,浏览器是 chrome。 Firefox 也表现出类似的行为。考虑到这不是一件非常不寻常的事情,我无法相信这给我带来了多大的麻烦。我只希望浏览器继续尝试,直到服务器再次可用。我是唯一有这个问题的人吗?
-
也许在crbug.com 上打开一个错误报告会有所帮助
标签: websocket connection