发送到个人socketid(私人消息)在socketIO中不起作用

时间:2017-05-30 16:38:56

标签: node.js sockets socket.io

我正在尝试构建一个小型聊天应用程序,我可以发送私人消息(不向所有人广播)。到一个选定的socketid。我浏览了SockeIO的文档,可以找到一个有效的解决方案。该应用程序运行良好,因为我使用广播事件测试它,所有连接的套接字接收发出的消息。如何实现个人消息传递?。

这是我试过的代码。

socket.to(sockets[data.receiver]).emit('receive',data.message);

我使用 socket.to()。emit('嘿','我刚认识你'); socketio docs和socket中给出的例子[data.receiver]给出了要发送消息的人的socket.id。

1 个答案:

答案 0 :(得分:0)

考虑以下内容:

class Connection {
        constructor(name, socket) {
                this.name = name;
                this.socket = socket;
        }
}

let connections = [];

socket.on('connection', (socket) => {
        // Get a name for the user/connection
        // ...
        // let name = getUsername(socket);

        connections.push(new Connection(name, socket));
});

let sendToName = (name, message) => {
        for(let i = 0, len = connections.length; i < len; i++) {
                if(connections[i].name === name) {
                        connections[i].socket.emit('message', message);
                        break;
                }
        }
};

当然,你可以使用名称以外的东西......但你明白了。