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 и только в этом случае нужно сохранять полученные данные в один файл.

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

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

Как собрать правильно ?


Ответы (1 шт):

Автор решения: cr1gger

Нашел такое решение: Когда приходит бинарник делаем:

binaryAudio.push(message.binaryData)

когда нужно собирать делаем:

let result = Buffer.concat(binaryAudio)

И уже result отдаем на загрузку.

→ Ссылка