嗨,由于某种原因,我无法在服务器上执行这行代码(很高兴我希望能够执行这行码(:
socket.broadcast.emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
但我可以执行这行代码:
socket.emit('server.game.join.team').emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
以下是我在服务器上使用的完整代码:
joinTeam: function (socket, io, data, callback) {
if (!data || !data.team || !data.room) return;
socket.join(data.team + '-' + data.room);
console.log('joinTeam');
socket.broadcast.emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
//socket.broadcast.to(data.room).emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
//socket.to('server.game.join.team').emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
//socket.emit('server.game.join.team').emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
}
在客户端上,当我从服务器发出事件时,我要检查以下代码:
Socket.on('server.game.join.team', function (data) {
console.log('gameCtrl server.game.join.team');
});
我录制了自己的视频,以表明插座广播对我不起作用。以下是视频链接:https://www.youtube.com/watch?v=QML4QE3F90o
但在视频中,我已经表明这行代码对我不起作用:
socket.broadcast.to(data.room).emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
相反,我应该向你展示这行代码对我来说也不起作用:
socket.broadcast.emit('server.game.join.team', { user: socket.user, team: data.team, room: data.room });
所以如果你愿意,我可以再录一次自己。为了证明上面的代码行对我也不起作用。
socket.broadcast.emit(...)
发送到除socket
变量表示的套接字之外的所有连接的套接字。因此,如果您正在观看作为socket
连接的客户端,那么您将看不到该广播消息。想象一个多用户聊天,一个用户发布一条消息,然后服务器将该消息广播给所有其他用户,但不会返回给刚刚发送消息的同一用户
如果你想发送到所有连接的套接字,那么你可以使用:
io.emit(...);