我试图实现故障安全websocket包装。我遇到的问题是处理超时错误。逻辑应该是:如果套接字在$ timeoutInMiliseconds期间未打开 - 必须关闭并重新打开$ N次。WebSocket连接超时
我正在写这样的东西。
var maxReconects = 0;
var ws = new WebSocket(url);
var onCloseHandler = function() {
if (maxReconects < N) {
maxReconects++;
// construct new Websocket
....
}
};
ws.onclose = onCloseHandler;
var timeout = setTimeout(function() {
console.log("Socket connection timeout",ws.readyState);
timedOut = true;
ws.close(); <--- ws.readyState is 0 here
timedOut = false;
},timeoutInMiliseconds);
但问题是处理超时的WebSockets正确的方式 - 如果我试图关闭未被连接插座我收到警告铬:
“WebSocket连接到“WS://127.0.0.1:9010 /超时“失败:WebSocket在连接建立之前关闭。”
我不知道如何避免它 - ws接口没有中止功能。
我试过的其他aproach不是关闭套接字超时,如果它不连接,但只是标记为不使用更多,关闭它,如果它收到readyState不止一个 - 但它可能会产生可能的泄漏,并复杂的这样简单的任务。