Как отправить необработанные данные с помощью 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.