【问题标题】:Socket emmission mysteriously does not work套接字发射神秘地不起作用
【发布时间】:2021-09-23 21:23:27
【问题描述】:

我正在使用 Socket.IO 在 Node.js 中编写游戏,并且我正在使用来回发射在客户端和主机之间传输数据。学习起来并不难,但这让我无所适从。我正在制作一个使用房间的游戏,玩家输入房间代码并加入它,然后我将游戏特定数据发送到该房间。

这是一个有效的方法

    /**
     *  The amount of time to answer the questions is over
     *  @param data - room number
     */
    socket.on('timesUp', function (data) {

        console.log("Times UP!");

        console.log(data.roomNum);

        socket.emit('startVoting');


    })

这是不工作的代码:

socket.on('playersVote', function (data) {

        console.log("playersVote data: " + data.playerOneResponse);

        console.log(data.roomNum);

        socket.to(data.roomNum).emit('playerStartVoting', {pOne: data.playerOneResponse, pTwo: data.playerTwoResponse} );

        console.log("after io emission");

    })

我知道发射正在发送到服务器,因为所有控制台日志都会打印有意义的数据:

playersVote data: [object Object]
{
  question: null,
  response: 'c',
  name: 'w',
  id: 'TW_92Ojct1EyhhE5AAAL',
  roomNum: '845'
}
845
after io emission

“playerStartVoting”排放的应用端处理程序如下:

IO.socket.on('playerStartVoting', IO.onPlayerStartVoting);

调用onPlayerStartVoting 是:

        onPlayerStartVoting: function (data) {

            console.log("voting started");

            if (data.pOne.id === App.mySocketID || data.pTwo.id === App.mySocketID) {
                App.Player.displayBlank();
            }
            else {
                App.Player.vote(data);
            }
        },

我一直无法让客户端控制台日志“投票开始”,所以我知道这就是它死亡的地方。我无法弄清楚为什么会这样。

希望有人能帮忙!

【问题讨论】:

    标签: javascript node.js json socket.io


    【解决方案1】:

    问题最终是我没有使用 .toString() 方法发出 roomNum。将 .toString() 添加到我的 roomNum 变量的末尾使其工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多