Javascript 套接字经常向客户端发送数据
以以下方式使用套接字io时,客户端获取数据的频率过高。 Server.jsJavascript 套接字经常向客户端发送数据,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,以以下方式使用套接字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-sc
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)
})
控制台结果是我不得不使用
useffect()
。这样,函数只调用一次您的控制台列表不可见。我建议您将更多日志记录放在控制台的两端,而不仅仅放在事件处理程序中。另外,setRooms
做什么?在客户端,如果每次运行该部分代码时都要为“int-con”注册处理程序,即每次运行socket.emit(“,…”)
,那么每次都要添加一个新的处理程序。因此,添加的每个处理程序都将针对一条接收到的消息运行,因此客户端可能有18个处理程序。那么我如何解决这个问题呢?我们不允许使用xhr。@JohnRC代码部分只运行一次