Я создаю приложение для чата в реальном времени с 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
Спасибо!