Почему socket.io не переставая генерирует новые соединения?

У меня есть приложение на express, в котором используется socket.io. На серверной стороне каждые 50 миллисекунд генерируется запрос:

setInterval(() => {
  io.emit('data', data);
}, 50);

На стороне клиента запрос принимается и устанавливается значение для переменной:

var list = {};
socket.on('data', (data) => {
  list = data;
}); 

Однако вместо использования 1 постоянного соединения, socket.io генерирует по 6-7 соединений в секунду. Почему это происходит?

Соединения


Ответы (2 шт):

Автор решения: qwabra

Почему socket.io не переставая генерирует новые соединения?

Предполагаю:

  • потому, что ваша серверная реализация не поддерживает ws
  • что-то неверно настроено
  • что-то блокирует ws поэтому socket.io переключился на xhr

Cмотри на скриншоте:

type - xhr (вместо ws или wss)

socket.io это не только WS

const socket = io({
  transports: ['websocket']
});

// on reconnection, reset the transports option, as the Websocket
// connection may have failed (caused by proxy, firewall, browser, ...)
socket.on('reconnect_attempt', () => {
  socket.io.opts.transports = ['polling', 'websocket'];
});

пример

→ Ссылка
Автор решения: Romantic777

Проблема может заключаться в том что версии socket.io-client и socket.io могут не совпадать и из за этого может возникнуть такая проблема. Также распространенная проблема (особенно у новичков) когда устанавливаете не забывайте точку , то есть не socketio , а socket.io. Можете проверить не ошиблись ли вы в package.json

→ Ссылка