Отправить дополнительные данные с BLOB через веб-сокеты - PullRequest
2 голосов
/ 03 октября 2019

Websockets поддерживает отправку BLOB-объектов, но как мы можем отправлять с ними дополнительные текстовые данные?

Мой вариант использования - загрузка файлов. Я делю каждый файл на несколько частей и отправляю на сервер максимум 3 части одновременно. На сервере мне нужен способ определить порядок этих срезов, чтобы я мог восстановить файл. Вот почему мне нужно отправить индекс среза вместе с BLOB и именем файла (можно загрузить несколько файлов)

1 Ответ

1 голос
/ 03 октября 2019

Самый простой способ отправки метаданных с двоичными данными - это разделение по размеру. Вы можете сгенерировать случайное число для идентификации файла (64-битное int или UUID). Добавьте этот номер ко всем фрагментам файла, затем добавьте номер фрагмента (скажем, 2 байта). Таким образом, у вас будет протокол, который выглядит следующим образом: сначала 8 байтов (или 16, если вы выбираете UUID) для идентификатора, затем 2 байта для номера чанка, а затем данные. Сначала отправьте метаданные как обычный JSON. Метаданные будут иметь имя файла и идентификатор, а также могут быть другие данные, которые вам могут понадобиться, например количество чанков. Конечно, может быть гораздо больше способов решить эту проблему.

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