我使用的是0.9.4版本(我可以根据您的指导使用任何版本)
在服务器(app.js)中,我正在存储套接字ID,如下所示:
var socket_ids = [];
io.sockets.on('connection', function(socket) {
socket_ids.push(socket.id); #This is how I am getting socket id. My real code logic is totally different, but getting socket id using socket.id;
socket.on('createNote', function(data) {
socket.broadcast.to(socket_ids[0]).emit('onNoteCreated', data);
});
});
简而言之,我有4人开设会议,所有4人都是不同的用户。
当p1发送消息时,它应该只到达p2。 当p3发送消息时,它应该只到达p4。
将if..else逻辑放在一边(我很好),当我使用套接字ID广播消息时,具有该套接字ID的客户端/浏览器没有收到该消息。此外,上面的广播代码行(其他行是自定义的SO)不会出错但客户端没有收到。
但是这些客户端/浏览器在广播到所有内容时都会收到消息。
感谢。
答案 0 :(得分:4)
使用最新的socket.io版本,我就是这样做的:
var sockets = [];
io.on("connection", function(socket){
// Store whole socket object.
// NOTE: You should probably loop through sockets array
// to see if a socket with this id already exists
sockets.push(socket);
socket.on("createNote", function(data){
sockets[0].emit("onNoteCreated", data);
});
});
希望这有帮助