套接字发射神秘地不起作用
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 变量的末尾使其工作
我正在使用 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 变量的末尾使其工作