套接字将消息发送给房间中的用户

我正在使用nodejs和socketio。 我做了一个私人聊天应用程序发送消息给选定的用户。

我目前的代码是:

chat_room.sockets.socket(user).emit( 'chat', { message : message, from : sockets[socket.id].username } ); 

现在我创build了房间,我想发送消息给特定房间的用户。

我尝试下面的代码,但不工作

 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(room)(user).emit(^ TypeError:object不是chat_room.sockets.on.socket的函数Client.get(C:\ Users \ Niraj \ Desktop \ node \ joomla-chat \ node_modules \)中的.on.socketID(C:\ Users \ Niraj \ Desktop \ node \ joomla-chat \ app.js:62:45) (C:\ Users \ Niraj \ Desktop \ node \ joomla-chat \ node_modules \ socket.io \ lib \ socket.js:258:socket.io \ lib \ stores \ memory.js:86:3)在Socket.EventEmitter.emit [as $ emit(Socket.chat_room.sockets.on.socket.on.socketID(C:\ Users \ Niraj \ Desktop \ node \ joomla-chat \ app.js:48:16)在Manager.onClientMessage上的SocketNamespace.handlePacket(C:\ Users \ Niraj \ Desktop \ node \ joomla-chat \ node_modules \ socket.io \ lib \ namespace.js:335:22) (C:\ Users \ Niraj \ Desktop \ node \ node \ joomla-chat \ node_modules \ socket.io \ lib \ manager.js:487:38) joomla-chat \ node_modules \ socket.io \ lib \ transport.js:387:20)在parsing器(C:\ Users \ Niraj \ Desktop \ node \ joomla- (event.js:96:17)(在聊天\ node_modules \ socket.io \ lib \ transports \ websocket \ hybi-16.js:39:10)

如何将消息发送给房间的特定用户

– – – – – – – – – – – – – – – -编辑 – – – – – – – – – ———-所以如果我这样做:

 socket.get('room', function(err, room) { chat_room.sockets.socket(user).emit( 'chat', { message : message, from : sockets[socket.id].username } ); }); 

然后这个消息会把这个消息发给Mr.X先生到ABC室

我对吗?

无论你想联系的用户是否在一个房间里,只要你有正确的识别信息,最简单的联系方式仍然是一个简单的socket.emit()。

你说你已经有了socket.id; 如果是这样,那么获取它们的套接字对象就像: io.sockets.sockets[socket.id]一样简单。

要发送消息,你可以说: io.sockets.sockets[socket.id].emit('identifier', data);

这应该回答你的问题,虽然这些是另外两件你可能会觉得有用的东西:

– 要播放整个房间,请关注: io.sockets.in('room').emit('event_name', data)

– 有关存储在io.sockets中的房间和连接的套接字的信息非常丰富。 我强烈build议你把一个console.log(io.sockets); 在你的代码的开始,仔细检查对象,看看你还能访问什么。

希望这可以帮助!