browser - 频繁从 socket.io 接收数据时反应崩溃
问题描述
我有一个反应应用程序每 5 秒接收一次数据。服务器可以很好地处理它,但是如果您离开页面并返回或等待约 10 秒,页面将变成白色并变得无响应。
数据包含应用程序要更新和显示的信息。
我尝试使用异步函数来处理数据,但这无济于事
socketio 客户端代码:
socket.on('UpdateGames', data => {
const {j, s, e} = JSON.parse(data)
setJoin(j.map(item => new Game(item)))
setSpec(s.map(item => new Game(item)))
setEnd(e.map(item => new Game(item)))
})
编辑:尝试每 10 秒发送一次数据,但同样的事情发生
解决方案
Evert 是正确的,我没有进行任何清理工作。将此添加到我的组件中
useEffect(() => {
socket.on('connect', socket => {
console.log('connected')
})
socket.on('UpdateGames', data => {
const {j, s, e} = JSON.parse(data)
console.log("RECEIVE")
setJoin(j.map(item => new Game(item)))
setSpec(s.map(item => new Game(item)))
setEnd(e.map(item => new Game(item)))
})
return () => socket.off('UpdateGames', listener)
}, [])
推荐阅读
- laravel - 企业代理背后的 Nginx Docker Web 服务器
- spring - SPRING HATEOS 链接(HTTPS 与 HTTP)
- r - 在 for 循环中嵌套 ifelse 语句
- java - 第二次替换 Fragment 后无法访问元素
- python - 将行和列总计添加到数据透视表失败
- excel - 如何将变量 (sFolder) 从 CommandButton1_Click 传递/存储到 Commandbutton2_Click?
- sql-server - 在下一行记录 SQL 中使用前一行记录
- javascript - 从另一个 javascript 文件中的函数访问局部变量
- javascript - 如何将函数中的值返回到其他函数中
- css - 选择不是具有特定属性属性的元素的子元素