Socket io chat - отключение клиентов, случайное пинг-тайм-аут и ошибки закрытия транспорта, версия 2.2.0 - PullRequest
1 голос
/ 11 июня 2019

У меня есть приложение чата, работающее на Node JS express с Socket io.

Раньше клиенты отключались, когда отправляли большую картинку размером более 4 МБ, я обнаружил, что сокет io не может обрабатывать / передавать / отправлять такие большие данные в Base64 через события выброса сокетов. В итоге я использовал модуль загрузки файлов Socket IO . Теперь я использую модуль загрузки файлов Socket io, чтобы пользователи могли загружать фото / файлы во время чатов. Теперь, даже если я загружаю самые большие изображения / файлы, чат не отключается.

Однако клиенты по-прежнему случайным образом отключаются из-за многих ошибок, таких как тайм-аут пинга, закрытие транспорта и т. Д., Даже если они просто ведут текстовый чат.

Ниже приведены настройки клиента и сервера сокета io, я пытался поиграться со значениями pingTimeout и pingInterval, но клиенты по-прежнему отключаются.

Конфигурации клиента Socket IO:

socket io client

Конфигурации Socket IO-сервера:

socket io server

Журналы JS на стороне клиента при отключении чата:

JS console log when chat disconnects

Версия моего клиента и сервера Socket io:

socket io versions

Схожая проблема, но безуспешно пытаясь найти какое-либо решение: https://github.com/socketio/socket.io/issues/2769

Мое приложение использует около 500-800 одновременно работающих клиентов.

Мой сервер Спецификации, где развернуто приложение:

  • 32 ГБ ОЗУ, 8 виртуальных ЦП, Ubuntu Lemp 16.04, Node ver 8.9.3

Мои вопросы:

  1. Какими должны быть оптимальные конфигурации моего сокета-клиента и сервера, такие как pingTimeout, pingInterval и т. Д., Для устранения проблем случайного отключения?
  2. Нужно ли мне обновлять спецификации сервера для размещения такого трафика? Если да, то сколько и что мне обновить?
    1. Может ли это быть причиной того, что когда многие пользователи загружают файлы с помощью модуля загрузки файлов Socket IO, это приводит к тому, что серверу Socket IO не хватает памяти, что приводит к отключению других клиентов? Как я могу предотвратить это?
...