在Socket.IO 1.0发送消息到特定的ID在Socket.IO 1.0发送消息到特定的ID(S

2019-05-13 04:19发布

我想发送数据到一个特定的套接字ID。

我们曾经是能够做到这一点的旧版本:

io.sockets.socket(socketid).emit('message', 'for your eyes only');

我怎么会去这样做的Socket.IO 1.0类似的东西?

Answer 1:

在socket.io 1.0它们提供这更好的方法。 每个插座会自动加入由自我ID默认的房间。 检查文件: http://socket.io/docs/rooms-and-namespaces/#default-room

所以,你可以通过下面的代码ID发出的插座:

io.to(socketid).emit('message', 'for your eyes only');


Answer 2:

在socket.io 1.0,你可以做到这一点与下面的代码:

if (io.sockets.connected[socketid]) {
    io.sockets.connected[socketid].emit('message', 'for your eyes only');
}

更新:

@MustafaDokumacı的回答包含一个更好的解决方案。



Answer 3:

@MustafaDokumacı和@Curious已经提供了足够的信息,我加入你如何能得到套接字ID。

要获得插座ID使用socket.id:

var chat = io.of("/socket").on('connection',onSocketConnected);

function onSocketConnected(socket){
   console.log("connected :"+socket.id);  
}


Answer 4:

如果你已经使用了一个命名空间,我发现了以下工作:

//Defining the namespace <br>
var nsp = io.of('/my-namespace');

//targeting the message to socket id <br>
nsp.to(socket id of the intended recipient).emit('private message', 'hello');

更多关于命名空间: http://socket.io/docs/rooms-and-namespaces/



Answer 5:

我相信@Curious和@MustafaDokumacı都提供了很好的工作方案。 所不同的是,虽然与@MustafaDokumacı的解决方案的消息被广播到一个房间里,不仅可以在特定的客户端。

当请求确认差异显着。

io.sockets.connected[socketid].emit('message', 'for your eyes only', function(data) {...});

按预期工作,而

io.to(socketid).emit('message', 'for your eyes only', function(data) {...});

失败

Error: Callbacks are not supported when broadcasting


Answer 6:

在的Node.js - > socket.io - >有一个聊天示例下载管线(上连接IO)部分粘贴此..我使用这个代码,作品100%

io.on('connection', function(socket){
  socket.on('chat message', function(msg){
    console.log(socket.id);
    io.to(socket.id).emit('chat message', msg+' you ID is:'+socket.id);
  });
});


文章来源: Sending message to a specific ID in Socket.IO 1.0