【发布时间】:2020-10-12 10:26:22
【问题描述】:
以下方式使用socket-io时,客户端获取数据过于频繁。
Server.js
socket.on('rcn-scd-fiv', () => {
rcdvsf.get('rcn-scd-db').then((data) =>{
socket.emit('int-con', data)
})
console.log('data given to', socket.id)
})
client.js:
socket.emit('rcn-scd-fiv')
socket.on('int-con', data => {
// The data is logged 18 times to the console
console.log(data.rcdvsf)
setRooms(data.rcdvsf)
})
控制台
【问题讨论】:
-
您的控制台列表不可见。我建议您将更多日志记录放在两端的控制台中,而不仅仅是在事件处理程序中。还有,
setRooms是做什么的? -
在客户端,如果您在每次运行该部分代码时为“int-con”注册处理程序 - 即每次运行
socket.emit(',...')- 那么您正在添加一个新的每次处理程序。因此,添加的每个处理程序将针对单个接收到的消息运行,因此客户端可能有 18 个处理程序。 -
JohnRC 那么我该如何解决这个问题呢?我们不允许使用 xhr 的。
-
@JohnRC 这段代码只运行一次
标签: javascript node.js websocket socket.io