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

socket.io - emit to socketid(single client) not working

本文关键字:客户端 单个 工作 socketid io- socket      更新时间:2024-02-14

我使用的是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自定义的)没有给出错误,但客户端没有接收到。

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

谢谢。

使用最新的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);
    });
});

希望这能帮助