xorg1990
New member
Hi, ich möchte über eine Websocket Verbindung eine große wav Datei streamen.
dafür wollte ich createReadStream nutzen um chunks zu erzeugen.
Es kommt zwar ein arraybuffer der mit der Länge des chunks übereinstimmt beim Client an, aber die Daten, die beim client ankommen sind leer.
Also im Arraybuffer sind nur Nullen.
bei encoding : null ist typeof chunk = Objeckt und bei encoding : "binary", ist typeof string.
Wo ist der Haken? Funktioniert createReadStream nur mit Text Dateien?
- - - Aktualisiert - - -
Gefindet, lag am if anscheint sind die ersten 20 chunks leer, aber das ist unsinnig, da die wav Datei nicht leer ist.
Nehme ich das if weg haut er mir die ganze Datei in den äther, was zu folge hat das der Client einfriert und Nodejs auch.
gibt da ein paar nette module : https://www.npmjs.com/package/advanced-throttle
aber rwie komme ich von den throttle zu der ws connection?
Man könnte auch in jeden readStream Callback ein setTimout machen aber ist das die Lösung??
dafür wollte ich createReadStream nutzen um chunks zu erzeugen.
Es kommt zwar ein arraybuffer der mit der Länge des chunks übereinstimmt beim Client an, aber die Daten, die beim client ankommen sind leer.
Also im Arraybuffer sind nur Nullen.
Code:
fs.stat(file, function(err,stats){
var opts = {
flags: "r",
encoding : null,
mode: 0666,
fd: null,
autoClose : true,
highWaterMark: 128*1024,
start: 46
}
rStream = fs.createReadStream(file,opts);
var i= 0;
rStream.on("data", function(chunk){
if(i++<20){
console.log(typeof chunk ,chunk.length)
ws.send(chunk.buffer);
}
})
});
bei encoding : null ist typeof chunk = Objeckt und bei encoding : "binary", ist typeof string.
Wo ist der Haken? Funktioniert createReadStream nur mit Text Dateien?
- - - Aktualisiert - - -
Gefindet, lag am if anscheint sind die ersten 20 chunks leer, aber das ist unsinnig, da die wav Datei nicht leer ist.
Nehme ich das if weg haut er mir die ganze Datei in den äther, was zu folge hat das der Client einfriert und Nodejs auch.
gibt da ein paar nette module : https://www.npmjs.com/package/advanced-throttle
aber rwie komme ich von den throttle zu der ws connection?
Man könnte auch in jeden readStream Callback ein setTimout machen aber ist das die Lösung??