socket.io - 发送到socketid(单个客户端)不工作

时间:2016-04-07 12:51:39

标签: javascript node.js sockets socket.io

我使用的是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)不会出错但客户端没有收到。

但是这些客户端/浏览器在广播到所有内容时都会收到消息。

感谢。

1 个答案:

答案 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);
    });
});

希望这有帮助