Socket.io 1つのクライアントからのすべてのスレッドには同じsocket.idがあります

StackOverflow https://stackoverflow.com/questions/9312703

  •  26-10-2019
  •  | 
  •  

質問

node.js socket.io-clientおよびsocket.ioを使用しています。クライアント側のWebSocketへの複数の接続を行うJavaScriptプログラムがあります。接続はすべて問題ありませんが、私が見ている問題は クライアントID すべての接続が同じであるため、メッセージを送信するためにクライアントを個別に選択することができません。キーはサーバー側で適切に受信されます。

2つの異なるnode.jsインスタンスからクライアントの2つのインスタンスを実行すると、問題はありません。しかし、これは私のシナリオにとってスケーラブルなソリューションではありません。クライアントスレッドを区別する方法はありますか?

クライアント側

    function setup(socketHost,socketPort,key,mesg,count) {
        var socket = new require('socket.io-client').connect( socketHost, {'port': socketPort});
        socket.on('connect', function() {
             var timeNow = new Date().getTime();
             socket.emit('message' , {key : key , instanceCount : count});
        });
        socket.on('disconnect', function() {
             console.log("Disconnected for port " + socketPort + " Key " + key );
         });
     }

     for (i=0; i<10; i++) {
         var key = "key"+i;
         setup('localhost',12000,""hello",i);
     }

サーバ側

  socket.sockets.on('connection', function(client) {
        console.log("Joining " + message.key + " for instance count " + message.instanceCount + " with id as " + client.id );
  });
役に立ちましたか?

解決

新しい接続を強制する必要があると思います。

var io_client require('socket.io-client');

options = {
  transports: ['websocket'],
  'force new connection': true
};

var client = io_client.connect(HOST, options);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top