Websocket超时

时间:2014-11-27 14:25:39

标签: javascript websocket timeout

当套接字试图连接到可用但忙碌的服务器时,我需要处理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)或达到限制,我怎么能停止?

0 个答案:

没有答案