Javascript 套接字经常向客户端发送数据

Javascript 套接字经常向客户端发送数据,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

以以下方式使用套接字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)
    })

控制台

结果是我不得不使用
useffect()
。这样,函数只调用一次

您的控制台列表不可见。我建议您将更多日志记录放在控制台的两端,而不仅仅放在事件处理程序中。另外,
setRooms
做什么?在客户端,如果每次运行该部分代码时都要为“int-con”注册处理程序,即每次运行
socket.emit(“,…”)
,那么每次都要添加一个新的处理程序。因此,添加的每个处理程序都将针对一条接收到的消息运行,因此客户端可能有18个处理程序。那么我如何解决这个问题呢?我们不允许使用xhr。@JohnRC代码部分只运行一次