gpt4 book ai didi

javascript - socket.io - 无法从服务器向特定客户端发送数据

转载 作者:行者123 更新时间:2023-11-29 23:21:14 25 4
gpt4 key购买 nike

所以我试图在连接时将数据从服务器发送到一个特定的客户端(这是服务器代码):

io.sockets.on('connection', function(socket){
socket.id = Math.random();

//this works, but sends data to all clients, which is not what I need
socket.emit('serverMsg');

//this seems to do nothing
io.to(socket.id).emit('serverMsg');

//this also does nothing
socket.broadcast.to(socket.id).emit('serverMsg');
});

正如我评论的那样,我可以向所有客户端发送数据,但是当我尝试使用 socket.id 向特定客户端发送数据时,什么也没有发生。我究竟做错了什么?没有错误消息或任何内容。

最佳答案

当客户端连接时,它的socket.id 会自动初始化。此外,它加入了 room同名:

Each Socket in Socket.IO is identified by a random, unguessable, unique identifier Socket#id. For your convenience, each socket automatically joins a room identified by this id.

如果出于某种原因,您希望重新定义 id,您还需要将套接字分配给相应的房间,因为 to() 方法需要将其名称作为参数感兴趣的房间。在您帖子的代码中,您重新定义了id,但是没有建立与相应房间的关联,因此emit方法将数据发送到“void”(进入一个房间,其名称等于 Math.random() 的结果,但不包含 socket )...

const customId = ....
socket.id = customId;

socket.join(customId);

io.to(customId).emit(...)

关于javascript - socket.io - 无法从服务器向特定客户端发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50551657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com