Node.js SocketIO-如何向特定客户端发送数据

Node.js SocketIO-如何向特定客户端发送数据,node.js,socket.io,Node.js,Socket.io,我在向特定客户发送数据时遇到问题 服务器端 var io=require('socket.io').listen(app.listen(app.get('port'))); io.sockets.on('connection',函数(socket){ socket.on('onHabboConnection',函数(数据){ socket.id=data.id; socket.join(data.id); io.sockets.in(data.id).emit('onHabboConnecte

我在向特定客户发送数据时遇到问题

服务器端

var io=require('socket.io').listen(app.listen(app.get('port')));
io.sockets.on('connection',函数(socket){
socket.on('onHabboConnection',函数(数据){
socket.id=data.id;
socket.join(data.id);
io.sockets.in(data.id).emit('onHabboConnected');
});
socket.on('onHabboConnected',函数(数据){
console.log(“+data.username+”已加入游戏。”);
});

});您正在覆盖在客户端生成的唯一标识符
socket.id
。这就是为什么您要发射,但由于该客户端不存在,所以它不会去任何地方:

socket.on('onHabboConnection', function (data) {
  //socket.id = data.id;  remove this
  socket.join(data.id);
  io.sockets.in(data.id).emit('onHabboConnected');
});

如果要更改
socket.id
,请在客户端进行更改。

“我尝试了所有方法,但它们都会抛出错误。”您尝试过socket.emit吗?如果是,请列出您尝试的所有其他失败的“方法”及其错误,以减少猜测量。
socket.emit()
适用于这种情况。抛出了什么错误?io.sockets.in(data.id.emit('onHabboConnected');没有发送到client.BUMP,有人吗?但是其他用户不能通过clientside更改用户id吗?套接字id是为客户端唯一生成的会话标识符。为什么您需要更改它?在这种情况下,从客户端更改它。但是,是的,其他用户可能可以更改它。您可能需要添加一些身份验证,如我使用的socket.emit所述,以发送到指定的传入客户端。可以吗?