我构建了一个 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 方法中进行连接。但是如果你想在多个组件中使用套接字。这也将多次连接到套接字。
我会说您在注册路线或整个应用程序时连接到套接字一次。我之前创建了一个示例应用程序。你可以检查一下。
关于javascript - 在收到来自 react 客户端的大量请求后,带有express的socket.io速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52716603/