Подскажите пожалуйста как правильно собрать конечный файл который приходит из сокета чанками(кусками).
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 и только в этом случае нужно сохранять полученный файл.
Проблема именно в правильной сборке файла. Т.к
приведения к типу стринг и конкатинация не работает так просто.
Если сравнивать бинарник через текстовик они отличаются отступами и переносами строк. Они внешне не идентичны, начинаются одинаково, а далее не много другое расположение(визуально)
Как собрать правильно ?