Подтвердить что ты не робот

Обмен двоичным буфером между сервером Node.js и браузером

Возникает проблема использования буферов между node.js и браузером, содержащим двоичные данные. Я очень доволен Socket.io как транспортный уровень, но проблема в том, что не существует переноса Buffer class для браузера. Не все, что я могу найти в любом случае

Я также встретил binary.js, и мне было интересно, есть ли хороший способ объединить их с socket.io как транспортный уровень и Binary.js в качестве носителя данных. Я также видел этот question, который относится к теме, но на самом деле не решает проблему.

Я знаю, что socket.io добавил двоичную поддержку, но я не нашел никакой документации по этой теме.

Update:

Кажется, что binary.js не будет решением. Основное требование, которое я хочу, - предоставить те же возможности, которые Buffer имеет в node в браузере.

Мои потребности состоят из двух вещей:

  • Обрабатывайте буфер таким же образом как на сервере, так и на браузере.

  • Поддержка двоичных данных.

Я, вероятно, буду использовать Array Buffer.

Изменить: Поскольку node.js запускается через V8, вы можете использовать ArrayBuffer. Кажется, проблема решена. Тем не менее, из того, что я знаю, люди node решили, что это хорошая идея создать буферный модуль и управлять им в связях C, которые они создали (из разговора, данного Райаном Далом). Я думаю, что это связано с тем, как выполняется буферизация по сети. Это означает, что ArrayBuffer по-прежнему не является хорошим средством передачи данных между сервером и браузером.

4b9b3361

Ответ 2

Встроенные в JavaScript строки используют широкие символы внутри. Поэтому они могут легко сохранить значение от 0 до 255 в каждой позиции символа. Это функция языка JavaScript, поэтому она должна работать одинаково в браузере или в node.js.

Вы можете использовать charCodeAt для извлечения значения определенной позиции в строке и fromCharCode для создания символа (который вы можете добавить в строку) со значением от 0 до 255.

Вы можете использовать различные строковые функции для управления данными в этой форме. Вы можете создавать константы с помощью строковых констант JavaScript, таких как "\x00\x12\x34\x56".