2

我尝试编写一个连接到 WebSocket 服务器的函数。此服务器关闭时会出现此问题。这个函数应该等待它,即使很长时间,但它不应该消耗 100% 的 CPU。这是我的代码:

var state = {
    connected: false
};

var settings = {
    host: 'localhost',
    port: 1988
};

function connect(settings) {
    try {
        var socket;
        var host = 'ws://' + settings.host + ':' + settings.port;
        var socket = new WebSocket(host);

        socket.onopen = function() {
            state.connected = true;
        }
        // socket.onmessage
        socket.onclose = function() {
            state.connected = false;
            connect(settings);
        }

    } catch(e){
        console.log(e);
    }
}

所以我需要以某种方式将一个间隔传递给 WebSocket 构造函数,看起来它只是试图在循环中打开一个连接,从而降低性能。我怎样才能做到这一点?

4

1 回答 1

2

当您尝试连接时,套接字会立即关闭,从而导致您再次尝试连接。在尝试之间添加间隔:

socket.onclose = function() {
    state.connected = false;
    setInterval(function() {
        connect(settings);
    }, 1000);
}
于 2013-02-11T03:52:13.177 回答