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

时间:2015-01-06 01:33:40

标签: javascript node.js websocket socket.io

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

这是我在前端做的事情,所以从数据库加载旧的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?
  • 将数据从后端发送回客户端
  • 或者我做错了什么?

2 个答案:

答案 0 :(得分:1)

我会对答案做出评论,因为这似乎对您有用。

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

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

答案 1 :(得分:1)

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