Я разрабатываю игровое приложение с react.js
, node.js
, express.js
и sequelize
.
Приложение простое: один игрок бросает вызов другому игроку (активным игрокам) и играет в игру после принятия вызова.
Я пытаюсь создать систему уведомлений с socket.io
, но socket.emit()
не работает под socket.on()
в 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);
});
Node
Здесь 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')
вне моего метода socket.on('challenge request')
, тогда я получу результат на консоли, когда нагрузка моего компонента реагирует.
Но я хочу получить этот результат всякий раз, когда нажимается кнопка вызова.
Как мне этого добиться?