我正在使用带有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))
}
答案 0 :(得分:0)
我真是个傻瓜。我正在多个连接中启动多个连接。 在一个以上的组件中,我有这个……
this.socket = socketIOClient(`${process.env.REACT_APP_proxy}`)
Sooo ..... yeah。只是对其他人的仅供参考,最好将一个文件连接起来并将其导入到其他人中。