2012-02-16 132 views
2

我正在使用node.js socket.io-client和socket.io。我有一个JavaScript程序,它可以在客户端与websocket建立多个连接。连接都很好,但我看到的问题是所有连接的client.id都是相同的,因为我无法单独选择一个客户端来发送消息。密钥在服务器端正确接收。socket.io来自一个客户端的所有线程都具有相同的socket.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

你能解释为什么你想在同一个客户端和服务器之间有很多连接吗?答案很可能是有更好的方法来完成你正在尝试做的事情。 – loganfsmyth 2012-02-16 16:36:59

+1

我正在使用这个负载测试程序 – 2012-02-17 03:19:30

回答

5

我想你可能需要强制一个新的连接。

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

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

var client = io_client.connect(HOST, options); 
+0

谢谢。辉煌的工作就像一个魅力。我应该已经想到打开io.js来查看源代码,但在阅读你的答案之后,这是一个想法。再次感谢您的答复 – 2012-02-18 02:10:37

+0

哈哈欢迎您。太棒了,它的工作! – Alfred 2012-02-18 08:18:37

相关问题