Текущее поведение
Мы не можем воспроизвести это надежно, но это описание настройки и проблемы нашего сервера.
Мы запускаем socket.io 2.2.0 на Node.JS /Сервер Express.
Примерно через 12 часов наш сервер не отвечает на выбросы от клиентов на настольных компьютерах Chrome и Firefox.Он продолжает работать в Edge, Safari и мобильных Chrome / Safari.
Например:
Сервер:
io.on('connection', (socket) => {
socket.on(‘test’, (data) => {
console.log(“This is a test”)
})
})
Клиент:
this.socket.emit(‘test’)
В этом примере мы видим ожидаемое поведение в течение первых 12 часов работы сервера.«Это тест» запускается сразу после запуска клиента.
После этого, возможно, из-за постепенной нагрузки на сервер (хотя обычно мы никогда не подключаем более 20 клиентов одновременно), сервер останавливаетсяприслушиваясь к клиенту.Несмотря на проверку того, что клиент отправил «тест», сервер никогда не регистрирует «Это тест».Опять же, это происходит только на настольном Chrome и настольном Firefox.
Это кажется странным, потому что если сервер был перегружен - он должен восстановиться, когда число клиентов уменьшится.Кроме того, почему избыточная нагрузка внезапно навсегда отключила возможность Chrome и Firefox отправлять выбросы на наш сервер?Мы знаем, что соединение websocket устанавливается от клиента, просматривая журналы сети.Мы также видим, что соединение отправляет эхо-запросы, но не получает понги с сервера.
Ожидаемое поведение
Сокеты Chrome и Firefox продолжают работать в обычном режиме.
Настройка
- ОС: Ubuntu 18.04
- браузер: Desktop Chrome, Desktop Firefox
- socket.io версия: 2.2.0