Обработка негабаритных сообщений с помощью socket.io - PullRequest
0 голосов
/ 10 января 2019

У меня есть проект nodejs, который порождает несколько процессов, которые взаимодействуют с сокетом io (процесс отправляет данные и получает их). Иногда во время разработки функций другие программисты могут совершать ошибки, из-за которых мой код инфраструктуры сокетов отправляет большие сообщения, размер которых превышает X (например, более 500 МБ).

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

Сейчас поведение таково, что все сокетные соединения терпят неудачу (а не только конкретные большие сообщения), и я не смог даже поймать дело, чтобы понять, что это причина.

Прямо сейчас я ограничиваю размер сообщения с помощью конфигурации "maxHttpBufferSize": Socket.IO о нем здесь сказано - «сколько байтов или символов может быть в сообщении до закрытия сеанса (чтобы избежать DoS).» Но я не могу уловить какую-либо ошибку, когда этот размер превышает, и все соединение разрывается, что очень плохо для меня.

Я действительно думал о том, чтобы попытаться добавить несколько проверок к моей отправке данных через код сокета, чтобы проверить, велик ли размер сообщения, но сериализация данных для этой проверки будет очень дорого стоить с точки зрения производительности, и сокет .io код должен уже делать это перед отправкой данных, поэтому я не хочу, чтобы это происходило дважды.

Лучшее решение, которое я надеюсь найти, - это поддерживаемый socket.io способ справиться с этим, если есть другой способ, который является дорогостоящим и может быть хорошим.

Примечание: я работаю с сокетом io 2.0.4. Если есть исправление только в более высокой версии, это также приемлемо.

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