[英]Hundreds of polling requests coming from socket.io, app really slow
我正在用socket.io,express和React创建一个实时聊天应用程序。 我的问题是我收到数百个轮询请求,直到我的浏览器基本崩溃,我不知道为什么。
我试过放一个轮询持续时间,一个关闭超时,一个心跳间隔,我已经检查过,我的socket.io和socket.io-client都在同一个版本上..我已经尝试过所有可以在网络但没有任何作品。 我确定这只是一个我无法找到的愚蠢的小错误,如果你能提供帮助那就太棒了,谢谢!
这是我的代码:
import express from "express";
import socketio from 'socket.io';
import path from 'path';
import ioCookieParser from 'socket.io-cookie-parser'
import http from 'http';
const app = express()
const port = process.env.PORT || 8000
app.set("port", port)
const httpServer = new http.Server(app);
const io = socketio(httpServer);
io.use(ioCookieParser(secret));
io.on('connection', function (client) {
const userId = client.request.signedCookies._session;
const clients = new Map();
client.on('login', () => {
clients.set(userId, { client })
console.log("clients :", clients)
})
client.on('message', (message) => {
User.findById(userId, function(err, obj) {
if(err) {
console.log(err);
return null
}
let currentUser = obj["email"];
client.broadcast.emit("received", { message, currentUser });
Connect.then(db => {
console.log("connected correctly to the server");
let chatMessage = new Chat({ message: message, sender: currentUser});
chatMessage.save();
});
})
})
client.on('error', function (err) {
console.log('received error from client:', client.id)
console.log(err)
})
});
以下是请求的示例:
GET localhost:8000 /socket.io/?EIO=3&transport=polling&t=Mideit5&sid=OxvoE0uJbi9DZyk-AAt8 xhr
谢谢!
我的问题是,在React组件中,我声明:
const socket = io.connect('http://localhost:8000')
在组件内部。
我已将此常量移到组件之外,现在问题已解决!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.