2

WebSocket サーバーに接続する関数を作成しようとしています。問題は、このサーバーがダウンしているときに発生します。この関数は長時間でも待機する必要がありますが、CPU を 100% 消費するべきではありません。これが私のコードです:

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 に答える