我正在使用node.js socket.io-client和socket.io。我有一个JavaScript程序,该程序在客户端的Websocket中多次连接。连接都很好,但是我看到的问题是 客户端 因为所有连接都是相同的,因此我无法单独选择客户以发送消息。键在服务器端正确接收。

如果我从两个不同的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 );
  });
有帮助吗?

解决方案

我认为您可能需要强制建立新的联系。

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