Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 套接字广播不';行不通_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript 套接字广播不';行不通

Javascript 套接字广播不';行不通,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,您好,由于某些原因,我无法在服务器上执行这行代码(我很高兴能够执行这行代码): 但我可以执行这行代码: 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, tea

您好,由于某些原因,我无法在服务器上执行这行代码(我很高兴能够执行这行代码):

但我可以执行这行代码:

 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');
});
在客户端上,当我从服务器发出事件时,我需要检查以下代码:

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');
});
我录下了自己的视频,以表明套接字广播对我不起作用。以下是视频的链接:

但在in视频中,我显示了这一行代码对我不起作用:

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
变量表示的套接字除外。因此,如果您正在观看作为
套接字连接的客户端,那么您将看不到该广播消息。设想一个多用户聊天,其中一个用户发布一条消息,然后服务器将该消息广播给所有其他用户,而不是返回给刚刚发送消息的同一用户

如果要发送到所有连接的套接字,请使用:

io.emit(...);

您好,我尝试在服务器上使用此代码:io.emit('server.game.join.team',{user:socket.user,team:data.team,room:data.room});但这不起作用,因为奇怪的事情发生了,比如当我加入用户bassie的另一边时,我的名字就变成了BA。下面是一段视频,我的意思是链接: