javascript - 在收到来自 react 客户端的大量请求后,带有express的socket.io速度变慢

标签 javascript node.js reactjs socket.io

我构建了一个 React 应用程序,它通过 socket.io 连接到本地运行的 Express Node 服务器。一切工作正常,但经过几个小时发送 100 多个请求,并监听从本地服务器到客户端的这些更改后,它开始变慢,并且在我重新加载客户端窗口 session 之前无法高效工作。

我很难解决这个问题。您认为这与我的 Node 服务器设置有关,还是与我的客户端有关?或者也许是硬件问题?我注意到的一件事是我的客户端如何从控制台不断连接到 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}`));

React 应用程序客户端:

  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);
  }

有什么想法吗?

最佳答案

您正在连接到 socket.io 两次。首先是在 componentDidMount 处,其次是在调用 send() 时。不推荐这样做。

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

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

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

关于javascript - 在收到来自 react 客户端的大量请求后,带有express的socket.io速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52716603/

相关文章:

javascript - 如何在 react nextjs 中创建 protected 页面

reactjs - React TS useContext useReducer 钩子(Hook)

javascript - 如何在 React 中使用循环旋转木马实现平滑过渡

javascript - Json 请求在 javascript 中有效,但在 php 中无效

javascript - 使用javascript在iPhone上自动播放和手动播放youtube视频无法正常工作

javascript - 从 AngularJS 指令中的文件运行 JavaScript 代码

node.js - 如何使用 Node.js 比较两个图像

node.js - 从 node.js session 获取信息与从数据库获取信息

node.js - 使用 puppeteer 在选项卡之间切换

javascript - 您如何在可编辑的 div 上录制和回放编辑事件?