Socket.IO 向我自己的房间发送数据

Socket.IO emit data into a room to myself

我正在构建一个聊天应用程序,我想在其中加载两个用户之间的最后一条消息。

这是我在前端所做的,所以从数据库中加载旧的 messageList:

socket.emit('get messageList', data);

在后端,我将消息加载到 messages 并尝试将它们发回。我不想 broadcast.emit 因为我想在我的会话中加载数据,而不是在聊天伙伴中。

socket.in(roomId).emit('send messageList', messages);

当我执行这段代码时,聊天伙伴的消息列表会被刷新。基本上和

是一样的效果
socket.in(roomId).broadcast.emit('send messageList', messages);

在我实施房间之前

socket.emit('send messageList', messages);

会按照我的预期更新我的列表。但是由于我将代码用于房间,所以它不再起作用了。

我的问题:

我会把我的评论变成一个答案,因为这似乎对你有用。

如果您只是想响应向您发送请求的客户端,您只需 socket.emit() 返回请求套接字。你只是想回复发件人,所以你不会因为有聊天室被使用而做任何不同的事情。无论聊天室使用情况如何,响应都会发送到请求它的套接字。

要发送到单个客户端,只需发送到该客户端的套接字即可。如果您想发送给聊天室中的所有客户或房间中除了一个客户以外的所有客户,您只能使用聊天室来帮助发送。

socket.nsp.to(room).emit('room_message','hello world')