socket.io Все потоки от одного клиента имеют одинаковый socket.id - PullRequest
2 голосов
/ 16 февраля 2012

Я использую node.js socket.io-client и socket.io. У меня есть программа JavaScript, которая делает несколько подключений к веб-сокету на стороне клиента. Все соединения в порядке, но проблема, с которой я сталкиваюсь, заключается в том, что client.id для всех соединений одинаковы, из-за чего я не могу выбрать клиента по отдельности для отправки сообщения. Ключи правильно получены на стороне сервера.

Если я запускаю два экземпляра клиента из двух разных экземпляров node.js, проблема не в этом. Но это не масштабируемое решение для моего сценария. Есть ли способ отличить клиентские потоки?

Клиентская сторона

    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 );
  });

1 Ответ

5 голосов
/ 17 февраля 2012

Я думаю, вам может понадобиться установить новое соединение.

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

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

var client = io_client.connect(HOST, options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...