[英]Socket.io broadcast.to not working but broadcast.emit does
I'm trying to make a chat app work via rooms. 我正在尝试通过房间使聊天应用程序正常工作。
On the server side I have something like: 在服务器端,我有类似以下内容:
io.sockets.on('connection', function (socket) {
socket.emit('connection', { userId: socket.id});
socket.room = 'General';
console.log(socket.room);
socket.on('sendMessage', function (data) {
console.log(data.room);
// socket.broadcast.emit('receiveMessage', { data: data });
socket.broadcast.to(data.room).emit('receiveMessage', { data: data });
});
socket.on('disconnect', function () {
console.log("DISCONNECT");
socket.emit('disconnect');
});
});
Client-side: 客户端:
var room = 'General';
var message = 'test';
socket.emit('sendMessage', { room : room, message: message });
socket.on('receiveMessage', function (data) {
console.log(data);
});
When using socket.broadcast.emit, I see the console logs on the client side for all connected users. 使用socket.broadcast.emit时,我在客户端上看到了所有已连接用户的控制台日志。 When using socket.broadcast.to(data.room), I don't see the console logs.
当使用socket.broadcast.to(data.room)时,我看不到控制台日志。
Room is set to 'General' for all clients upon connection. 连接后,所有客户的房间均设置为“常规”。
Ideas? 想法?
Ps.: Made a mistake thinking I had to do socket.room = 'room'
. 诗:误以为我必须做
socket.room = 'room'
。 It's actually socket.join('room');
实际上是
socket.join('room');
socket.join('General'); socket.join( '一般'); instead of socket.room fixed it.
而不是用socket.room固定它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.