套接字发射神秘地不起作用

Socket emmission mysteriously does not work

我正在使用 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);
            }
        },

我一直无法让客户端控制台记录“投票开始”,所以我知道这就是它死的地方。我不明白为什么会这样。

希望有人能帮忙!

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