我正在使用react.js
,node.js
,express.js
和sequelize
开发游戏应用程序。
应用程序很简单,一个玩家挑战另一个玩家(活跃玩家),并在接受挑战后玩游戏。
我正在尝试使用socket.io
创建一个通知系统,但是socket.emit()
在socket.on()
的{{1}}下无法正常工作。我不知道这是怎么回事?
这是我的代码:
反应
在质询按钮单击上发送此质询请求:
node.js
,并尝试从socket.emit('challenge request', {
player1_Name : localStorage.getItem('user-name'),
player2 : response.data.data.player2_id,
game : response.data.data.gameId,
gameOption : response.data.data.gameOptionId,
challengeStatus : response.data.data.challengeStatus
});
接收此通知:
node.js
节点
socket.on("challenge-notify", function(data) {
console.log("challenge Notify", data);
helper(data.player1_Name,data.player2,data.game,data.gameOption);
});
函数在socket.emit('challenge-notify')
方法下不起作用:
socket.on('challenge request')
如果我将 io.on('connection', function (socket) {
socket.on('challenge request', function (challengeReq) {
socket.emit('challenge-notify', {
player1_Name : challengeReq.player1_Name,
player2 : challengeReq.player2,
game : challengeReq.game,
gameOption : challengeReq.gameOption,
challengeStatus : challengeReq.challengeStatus
});
});
});
方法放在我的socket.emit('challenge-notify')
方法之外,那么当我加载React组件时,我将在控制台获得结果。
但是,只要单击挑战按钮,我都希望得到这个结果。 我该如何实现?
答案 0 :(得分:0)
是的,终于找到了解决方法。
我想在socket.emit
内使用socket.on
来执行此操作,我使用了io.sockets.emit
方法,并且效果很好。
socket.on('challenge request', function (challengeReq) {
io.sockets.emit('challenge-notify', {
player1_Name : challengeReq.player1_Name,
player1: challengeReq.player1,
player2 : challengeReq.player2,
game : challengeReq.game,
gameOption : challengeReq.gameOption,
challengeStatus : challengeReq.challengeStatus
});
});