cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

BinaryData Buffer как собрать в одно целое?

Подскажите пожалуйста как правильно собрать конечный файл который приходит из сокета чанками(кусками).

connection.on('message', (message)=>{
            // console.log(message);
            if (message.type === 'binary'){
                // console.log(message.binaryData)
                // binaryAudio = Buffer.concat(binaryAudio, message.binaryData)
                // binaryAudio = binaryAudio .concat(binaryAudio, message.binaryData)
                // binaryAudio.push(message.binaryData)
                //binaryAudio += message.binaryData.toString()
                // binaryAudio.append(message.binaryData.toString())
            }
            if (message.type === 'utf8' && JSON.parse(message.utf8Data).streamcontrol){
                // console.log(binaryAudio.length)
                // binaryAudio = [];
                // res.end('');
                res.statusCode = 200;
                res.setHeader('content-type', 'audio/opus');
                res.setHeader('Content-Disposition', 'attachment; filename=file.ogg'); 
                res.setHeader("Content-Length", binaryAudio.toString().length);
                // res.end(binaryAudio);
                // res.end(binaryAudio.toString());
            }
        })


В общем выше код это все мои попытки собрать воедино.
Но это все не увенчалось успехом.
Файл не открывается как нужно.

В чем суть имеется глобальная переменная binaryAudio
И когда в сокетах приходит тип binary нужно складывать данные в эту переменную.

В конце когда он отправит все бинарники он пришлет json в котором есть свойство streamcontrol и только в этом случае нужно сохранять полученный файл.

Проблема именно в правильной сборке файла. Т.к приведения к типу стринг и конкатинация не работает так просто.

Если сравнивать бинарник через текстовик они отличаются отступами и переносами строк. Они внешне не идентичны, начинаются одинаково, а далее не много другое расположение(визуально)

Как собрать правильно ?
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
cr1gger
@cr1gger Автор вопроса
Все дороги ведут в Рим — встретимся в Риме!
Нашел такое решение:
Когда приходит бинарник делаем:
binaryAudio.push(message.binaryData)

когда нужно собирать делаем:
let result = Buffer.concat(binaryAudio)

И уже result отдаем на загрузку.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы