我正在构建一个聊天应用程序,我想在其中加载 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()
回请求套接字。您只是尝试回复发件人,因此您不会仅仅因为使用了聊天室而做任何不同的事情。响应将转到请求它的套接字,而不考虑聊天室使用情况。
要发送到单个客户端,您只需发送到该客户端的套接字。 仅当您要发送到该聊天室中的所有客户端或聊天室中的所有客户端(一个客户端除外)时,才使用聊天室来帮助发送。