加入会议室后,套接字IO无法接收消息

时间:2019-11-11 15:16:26

标签: reactjs express socket.io react-redux

我正在构建一个应用程序,允许您加入游戏,然后从游戏中的其他玩家那里接收更新。在添加房间功能之前,套接字可以正常工作,但是现在客户端不再收到广播到各自房间的消息。

服务器代码:

io.on('connection', client => {
      // JOIN GAME
      client.on('join-game', ({gameId, playerId}) => {
        console.log(gameId)
        client.join('new-room', () => {
          io.sockets.in('new-room').emit('player-joined-game', 'Is this thing on?);
        })
    });

客户代码:

componentDidMount = () => {
  const socket = socketIOClient('localhost:5000');
  socket.on('player-joined-game', game => {
    console.log(game)
  })
}

服务器收到消息,但客户端不打印“这东西在吗?”

2 个答案:

答案 0 :(得分:2)

显然,您的客户可能没有加入任何游戏,因为您的客户没有发出“加入游戏”消息。 加, 您错过了网址字符串上的“ http://”。

您可以在客户端尝试以下操作吗?

componentDidMount = () => {
  const socket = socketIOClient('http://localhost:5000');
  socket.on('player-joined-game', game => {
    console.log(game)
  });
  socket.emit('join-game',{gameId:'game1',playerId:'player1'});
}


答案 1 :(得分:0)

事实证明,这是由于每次我从客户端向服务器发送“加入会议室”消息时,都创建了一个新的套接字实例引起的。这意味着每次我加入房间时,我都会在房间中添加一个新插座。通过将客户端套接字声明移至常量文件并将其用于我的所有socketIO使用,可以解决此问题。