Как отправить необработанные данные с помощью socket.io

Я пытаюсь уменьшить socket.io пропускная способность при использовании веб-сокетов. Я переключился на двоичные данные, но, глядя в консоль разработчика браузера, пакеты отправляются как:

[ 'type of the packet (first argument of .emit)', associated data ]

Я использую только один тип пакета, так что это вызывает ненужные издержки - отправляются бесполезные байты, и все это кодируется JSON без причины.

Как я могу избавиться от типа пакета и просто отправить необработанные данные?

1 ответ

Решение

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

Если вы хотите выжать все байты из транспорта, то вам, вероятно, нужно избавиться от socket.io и просто используйте простой webSocket, где вы контролируете больше содержимого каждого пакета (хотя вам придется переопределить некоторые вещи, которые socket.io делает для вас).

Используя socket.io в node.js, вы можете отправлять двоичные файлы, отправляя ArrayBuffer или Buffer. В браузере вы можете отправлять двоичные файлы, отправляя ArrayBuffer или Blob.

Другие вопросы по тегам