1. ホーム
  2. node.js

[解決済み] webSocketServer node.js クライアントを区別する方法

2023-01-25 17:25:32

質問

node.jsでソケットを使おうとしているのですが、成功したのですが、コード内でクライアントをどのように区別すればいいのかわかりません。 ソケットに関する部分はこれです。

var WebSocketServer = require('ws').Server, 
    wss = new WebSocketServer({port: 8080});
wss.on('connection', function(ws) {
    ws.on('message', function(message) {
        console.log('received: %s', message); 
        ws.send(message);
    });
    ws.send('something');
});

このコードは私のクライアントjsで問題なく動作します。

しかし、私は特定のユーザーまたは私のサーバーでソケットを開いているすべてのユーザーにメッセージを送信したいと思います。

私の場合、私はクライアントとしてメッセージを送信し、私は応答を受け取りますが、他のユーザは何も表示されません。

例えば、user1 が webSocket を介してサーバーにメッセージを送信し、私はソケットを開いている user2 に通知を送信したいと思います。

どのように解決するのですか?

CLIENTS[]という配列にユーザIDを代入すると、すべてのユーザが含まれるようになります。以下のように、すべてのユーザーに直接メッセージを送信することができます。

var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port: 8080}),
    CLIENTS=[];

wss.on('connection', function(ws) {
    CLIENTS.push(ws);
    ws.on('message', function(message) {
        console.log('received: %s', message);
        sendAll(message);
    });
    ws.send("NEW USER JOINED");
});

function sendAll (message) {
    for (var i=0; i<CLIENTS.length; i++) {
        CLIENTS[i].send("Message: " + message);
    }
}