套接字广播不起作用



嗨,由于某种原因,我无法在服务器上执行这行代码(很高兴我希望能够执行这行码(:

 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(...);

最新更新