Socket.IO 将数据发送到房间给自己

Socket.IO emit data into a room to myself

本文关键字:房间 自己 IO 数据 Socket      更新时间:2023-09-26

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

这是我在前端所做的,因此从数据库加载旧的消息列表:

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.io 将数据从后端发送回客户端?
  • 还是我做错了什么?
socket.nsp.to(room).emit('room_message','hello world')

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

如果您只是尝试响应向您发送请求的客户端,则只需socket.emit()回请求套接字。您只是尝试回复发件人,因此您不会仅仅因为使用了聊天室而做任何不同的事情。响应将转到请求它的套接字,而不考虑聊天室使用情况。

要发送到单个客户端,您只需发送到该客户端的套接字。 仅当您要发送到该聊天室中的所有客户端或聊天室中的所有客户端(一个客户端除外)时,才使用聊天室来帮助发送。