【发布时间】:2013-01-03 13:35:42
【问题描述】:
我正在使用 nodejs 和 socketio。我制作了一个私人聊天应用程序,可以向选定的用户发送消息。
我当前的代码是:
chat_room.sockets.socket(user).emit(
'chat',
{
message : message,
from : sockets[socket.id].username
}
);
现在我创建了房间,我想向特定房间的用户发送消息。
我尝试了下面的代码,但没有工作
socket.get('room', function(err, room) {
chat_room.sockets.socket(room)(user).emit(
'chat',
{
message : message,
from : sockets[socket.id].username
}
);
});
它错了,它给了我一个错误:
C:\Users\Niraj\Desktop\node\joomla-chat\app.js:62 chat_room.sockets.socket(房间)(用户).emit( ^ 类型错误:对象不是函数 在 chat_room.sockets.on.socket.on.socketID (C:\Users\Niraj\Desktop\node\joomla-chat\app.js:62:45) 在 Client.get (C:\Users\Niraj\Desktop\node\joomla-chat\node_modules\socket.io\lib\stores\memory.js:86:3) 在 Socket.get (C:\Users\Niraj\Desktop\node\joomla-chat\node_modules\socket.io\lib\socket.js:258:14) 在 Socket.chat_room.sockets.on.socket.on.socketID (C:\Users\Niraj\Desktop\node\joomla-chat\app.js:48:16) 在 Socket.EventEmitter.emit [as $emit] (events.js:96:17) 在 SocketNamespace.handlePacket (C:\Users\Niraj\Desktop\node\joomla-chat\node_modules\socket.io\lib\namespace.js:335:22) 在 Manager.onClientMessage (C:\Users\Niraj\Desktop\node\joomla-chat\node_modules\socket.io\lib\manager.js:487:38) 在 WebSocket.Transport.onMessage (C:\Users\Niraj\Desktop\node\joomla-chat\node_modules\socket.io\lib\transport.js:387:20) 在解析器。 (C:\Users\Niraj\Desktop\node\joomla-chat\node_modules\socket.io\lib\transports\websocket\hybi-16.js:39:10) 在 Parser.EventEmitter.emit (events.js:96:17)
如何向房间的特定用户发送消息
-------------------编辑--------------- ------------- 所以如果我这样做:
socket.get('room', function(err, room) {
chat_room.sockets.socket(user).emit(
'chat',
{
message : message,
from : sockets[socket.id].username
}
);
});
然后这会将消息发送到 Mr.X 到 ABC 房间
我说的对吗?
【问题讨论】:
-
什么是变量“用户”?你如何联系他们将取决于你有什么信息(例如,如果你有他们的 socket.id,它只是一个简单的 socket.emit)
-
它的socket ID 接收消息的人
-
在这种情况下,您只需要对该用户执行 socket.emit;他们在一个房间里并不重要,传统的发射仍然可以正常工作
-
请检查我编辑的问题
-
不完全是;我会发布一个关于你应该做什么的答案......
标签: node.js socket.io chatroom