我一直在尝试使用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');
效果很好。如何解决这个问题?
答案 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);
});
});