Я использую node.js с интерфейсом React. Я создаю MMO-игру типа GPS. Недавно я решил отбросить большинство HTTP-запросов и использовать сокеты, чтобы я мог отправлять данные в любое время, и передний конец должен беспокоиться только о том, что с ним делать, когда он его получает.
Ранее я создавал сайты с сокетами, но никогда не сталкивался с этой проблемой.
По сути, каждый раз, когда мой браузер открывает сокет-соединение с узлом, он открывает 2-3 соединения одновременно (?). Когда он отключается, я получаю console.log о том, что 3 сокета-соединения были закрыты. Это будет выглядеть так:
User disconnected
User disconnected
A user has connected to the system with id: nUMbkgX6gleq-JZQAAAD
A user has connected to the system with id: CzFtR2K5NJ1SoiHLAAAE
A user has connected to the system with id: tgGYhpXuOONmL0rMAAAF
Пока что это не будет проблемой, однако я получаю только ПЕРВЫЙ «инвентарь», срабатывающий. Позже, когда я снова вызываю функцию для выдачи инвентаря, браузер, похоже, не получает его. Но журналы консоли в функции узла будут срабатывать правильно.
У меня такое ощущение, что это как-то связано с открытием нескольких розеток.
Вот событие реакции:
this.socket.on("inventory", charData => {
console.log('heres the data', charData)
props.setCharStats(charData[0])
})
Here's the node emitter:
const getCharInventory = (charId, userId) => {
dbInstance
.getCharInventory(charId)
.then(response => {
console.log( // this console.log happens just fine
"emmited inventory, userId is: ", userId, " with this response: ", response)
socket.emit("inventory", response)
})
.catch(err => console.error(err))
}