Socketio发送到个人socketid(私人消息)

时间:2017-02-25 17:36:53

标签: node.js sockets socket.io

我一直在尝试使用socketio实现聊天服务。我需要将消息设置为选定的套接字ID。文档说使用像 new Retrofit.Builder().baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .addConverterFactory(new GsonStringConverterFactory(gson)) .build(); 这样的函数 但它似乎没有奏效。几个月前,我通过像socket.to(<socketid>).emit('hey', 'I just met you');这样的函数实现了这个功能,但现在它似乎不再起作用了。顺便说一下,io.sockets.connected[<socketid>].emit('hey', 'I just met you');效果很好。如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您可以使用socket.broadcast.to(<socketid>)广播到特定的套接字ID。

以下是一个例子:

socket.join('my-unique-room-name');
socket.broadcast.to('my-unique-room-name').emit('welcome', 'helloWorld'); //only people in 'my-unique-room-name' will receive this message

希望这有帮助!

答案 1 :(得分:0)

通过以下代码管理发送私人消息。

io.on("connection", function(socket) {
  socket.on("online", data => {
    socket.name = data.username;
    onlineUsers.push(data);
    sockets[data.username] = socket.id;
  });
  socket.on("message", function(data) {
    socket.broadcast.emit("public", data);
  });

  socket.on("send_personal_message", function(data) {
    socket.to(sockets[data.user]).emit("personal", data);
  });

  socket.on("disconnect", reason => {
    sockets.splice(sockets.findIndex(id => id === socket.id), 1);
  });
});