当套接字试图连接到可用但忙碌的服务器时,我需要处理websocket超时。
更深入我有一个Web应用程序,可以连接到几个单线程远程套接字服务器,负责处理作为输入传递的后处理数据。
目标是从Web GUI收集数据,然后将它们提交给第一个可用的插座并进行监听。
如果服务器套接字守护程序已在处理数据,则它无法提供已转发到列表的第二个套接字的用户请求。
基本上,通过一个实际的例子,我已准备好接受来自网络浏览器的电话:
WS://10.20.30.40:8080 / WS://10.20.30.40:8081 / WS://10.20.30.40:8082 / WS://10.20.30.40:8083 / WS://192.192.192.192:9001 /
当第一个套接字接收到呼叫并执行握手时,它开始处理数据(此过程可能需要几分钟)。
当另一个客户端对不同的数据集执行相同的请求时,我希望请求由第二个可用插槽提供,依此类推。
所以问题是......如何联系套接字(列表的第一个),等待250毫秒,(如果超时)跳到下一个?
我从以下方法开始:
$.interval = function(func, wait, times) {
var interv = function(w, t) {
return function() {
if (typeof t === "undefined" || t-- > 0) {
setTimeout(interv, w);
try {
func.call(null);
} catch(e) {
t = 0;
throw e.toString();
}
} else {
alert('stop');
}
};
} (wait, times);
setTimeout(interv, wait);
}
handler = new WebSocket(url);
loop = 1;
$.interval(function(){
rs = handler.readyState;
console.log("(" + loop++ + ") readyState: " + rs);
}, 25, 10); //loop 10 times every 25 milliseconds
但是,如果socket.readyState变为1(OPEN)或达到限制,我怎么能停止?