socketio 发emit消息。向单个socket client发送 结果所有client都收到消息。
服务端 var clients = {}; 每次 有新客户端过来 。把socket保存在clients var currClient = { id: 0, socket: 0, }; currClient.id = id; currClient.socket = socket; socket.id =id; clients[currClient.id] = currClient;
然后接收到请求的时候。
var client = clients[id];
client.socket.emit('dosomething', {message:data});
但是这个socket发送的emit消息。为什么所有的客户端都收到了?
3 回复
以上的原因是,同一个进程 启动多个线程 连接服务器, 所得到的连接是同一个连接。
但是开启多个进程 连接服务器 得到的是不同的连接。
我用的是java的 socketio client
不知道什么原因?
var socket = require(‘socket.io-client’).connect(‘http://10.21.177.79:4001’, {“multiplex”: false, “forceNew”: true}); 默认在单个进程中创建的socket是相同的。可以通过这种方式,在单个进程中创建出多个socket;
ok thanks