5

sockjs-node サーバーに接続されているすべてのクライアントにメッセージをブロードキャストしたいと考えています。

現在、次のコードがあります

var clients = {};
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
    clients[conn.id] = conn;

    for(key in clients) {
        if(clients.hasOwnProperty(key)) {
            clients[key].write('test');
        }
    }

    conn.on('close', function() {
        delete clients[conn.id];
    });
});

それを行うより効率的な方法はありますか?

多分

var clients = [];
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
    var index = clients.push(conn);

    var lenght = clients.length;
    while(length--) {
        if(clients[length] !== undefined) {
            clients[length].write('test');
        }
    }

    conn.on('close', function() {
        delete clients[index];
    });
});

ありがとう

4

1 に答える 1

0

1.) for...in は、通常の for や while よりも遅く、それほどではありません
2.) また、おそらくオブジェクトから値を取得するのは、配列から値を取得するよりも遅くなります (文字列からアドレスを取得する必要があるため、しかし、すぐに配列インデックスからアドレスを計算できます)、またそれほどではありません
。したがって、2番目の方が高速です。

于 2020-03-24T05:17:28.197 に答える