Сотни опросных запросов, поступающих от socket.io, приложение очень медленно - PullRequest
0 голосов
/ 05 июня 2019

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

Спасибо!

1 Ответ

0 голосов
/ 05 июня 2019

Моя проблема заключалась в том, что в компоненте React я заявлял:

const socket = io.connect('http://localhost:8000')

внутри компонента.

Я переместил эту константу за пределы компонента, и теперь проблемарешено!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...