Socket.IO无法从Serer向客户端发出消息

时间:2020-04-09 18:29:04

标签: javascript node.js socket.io

我与服务器和客户端建立了连接,并让服务器侦听要在大厅播放的播放器。服务器接收播放器名称并更新播放器,但是,当将播放器发回客户端时,我遇到了问题。

简单来说,我们实现的伪结构如下……

服务器

io.on('connection', function(socket){ ....
         socket.emit('ack', {....

         socket.on('createPlayer', function(data){
                          .... (update newPlayer object)  .....
                           socket.emit('newPlayer', {
                                         playerName: newPlayer.name
                              [...]

客户

let socket = io();

socket.on('ack', function(data) {
            console.log('ack', data)
} 

socket.on('newPlayer', function(data) {
              console.log('newPlayer', data)

当客户端的浏览器与服务器建立连接时,将发送和接收“ ack”消息,并将其记录到客户端的控制台。但是,当客户端创建一个新播放器并点击“ createPlayer” socket.on时,它将尝试将新播放器发回客户端,但从未收到。

关于客户为什么永远不会收到发送消息的任何建议?

1 个答案:

答案 0 :(得分:0)

您应该使用它向所有连接的客户端发送消息:

io.emit('event_name', msg);

您还应该对除新客户端之外的所有客户端使用此功能:

socket.broadcast.emit('event_name', msg);

此功能用于将消息发送到当时已发送消息的新客户端:

socket.emit('event_name', msg)

您可以使用此方法发送指定的客户端:

io.to(socketId).emit('event_name', data)