来自响应客户端的请求数量

时间:2018-10-09 08:32:06

标签: javascript node.js reactjs socket.io

我已经构建了一个React应用,该应用通过socket.io连接到本地运行的Express节点服务器。一切正常,但是经过100多个小时的发送请求后,并且侦听了从本地服务器到客户端的那些更改,它开始变慢并且无法有效工作,直到我重新加载客户端窗口会话。

我很难解决这个问题。您是否认为这与我的节点服务器设置有关,还是与我的客户端有关?也许是硬件问题?我注意到的一件事是,客户端如何保持从控制台连接到socket.io。

const express = require('express')
const http = require('http')
const socketIO = require('socket.io')

// localhost port
const port = 4001

const app = express()

// server instance
const server = http.createServer(app)

// creates socket
const io = socketIO(server)


io.on('connection', socket => {
  socket.on('change view', (view) => {
    console.log('view changed to: ', view)
    io.sockets.emit('change view', view)
  })

})

server.listen(port, () => console.log(`Listening on port ${port}`));

反应应用程序客户端:

  componentDidMount() {
    const socket = socketIOClient(this.state.endpoint);
    socket.on('change view', (col) => {
         callAfunctionThatDoesSomething(col);
    })
  };

当我将更改发送到服务器时

  send = () => {
    const socket = socketIOClient(this.state.endpoint);
    socket.emit('change view', this.state.view);
  }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您两次连接到socket.io。首先在 componentDidMount ,然后在调用 send()时。不推荐使用。

您应该连接到插座一次。您可以在组件的componentDidMount方法中进行连接。但是如果要在多个组件中使用套接字。这还将多次连接到套接字。

我会说您在注册路线或整个应用程序时一次连接到套接字。我之前创建了一个示例应用程序。您可以检查一下。

https://github.com/vkasraj/random.ly