Соединение браузера с несколькими сокетами с помощью JS socket.io - PullRequest
0 голосов
/ 11 января 2019

Я использую 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))
    }

1 Ответ

0 голосов
/ 11 января 2019

Я такой придурок. Я начал несколько соединений в нескольких соединениях. В более чем одном компоненте у меня было это ...

this.socket = socketIOClient(`${process.env.REACT_APP_proxy}`)

Ооооо ... да. Просто для справки другим, лучше подключить один файл и импортировать его в другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...