浏览器使用JS socket.io连接多个套接字

时间:2019-01-11 20:01:55

标签: javascript node.js reactjs websocket socket.io

我正在使用带有React前端的node.js。我正在构建基于GPS的MMO类型的游戏。我最近决定放弃大多数HTTP请求并使用套接字,因此我可以随时发送数据,并且前端只需要担心在接收到它时该如何处理。

我以前用套接字构建过站点,但是从未遇到过这个问题。

基本上,每次我的浏览器打开与node的套接字连接时,它都会一次打开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

现在,这不是问题,但是我只能使第一个“库存”排放起作用。稍后,当我调用该函数再次发出清单时,浏览器似乎没有收到它。但是控制台登录节点功能将正确触发。 我感觉这与打开多个套接字有关。

这是React事件:

 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 :(得分:0)

我真是个傻瓜。我正在多个连接中启动多个连接。 在一个以上的组件中,我有这个……

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

Sooo ..... yeah。只是对其他人的仅供参考,最好将一个文件连接起来并将其导入到其他人中。