【发布时间】:2015-03-03 15:41:49
【问题描述】:
我正在构建一个聊天应用程序,我想在开始时加载 2 个用户之间的最后一条消息。
这是我在前端所做的,所以从数据库中加载旧的 messageList:
socket.emit('get messageList', data);
在后端,我将消息加载到messages 并尝试将它们发送回来。我不想broadcast.emit,因为我想在我的会话中加载数据,而不是在聊天伙伴中。
socket.in(roomId).emit('send messageList', messages);
当我执行此代码时,聊天伙伴的 messageList 会被刷新。基本上和
的效果是一样的socket.in(roomId).broadcast.emit('send messageList', messages);
在我实现房间正常之前
socket.emit('send messageList', messages);
会像我预期的那样更新我的列表。但由于我将代码与房间一起使用,它不再起作用了。
我的问题:
- 这是为什么呢?
- 是否可以使用 socket.io 将数据从后端发送回客户端?
- 还是我做错了什么?
【问题讨论】:
-
如果您只是试图响应向您发送请求的客户端,您只需
socket.emit()回到请求套接字。您只是试图回复发件人,因此您不会因为使用聊天室而做任何不同的事情。无论聊天室使用情况如何,响应都会发送到请求它的套接字。 -
所以,你的意思是在我的情况下,我不必排放回房间(因为我已经在房间里了)并且我的旧代码
socket.emit('send messageList', messages);是正确的解决方案?我不确定这是否是正确的方法。但如果是这样的话,那就比我想象的要容易!谢谢!
标签: javascript node.js websocket socket.io