Streaming Binary mit Node.js und WebSockets

Ich habe dies gegoogelt und mich eine Weile um Stapelüberlauf gekümmert, aber keine Lösung gefunden - daher der Beitrag.

Ich spiele aus Neugier mit Node.js und WebSockets herum. Ich versuche, einige Binärdaten (ein MP3) an den Client zu streamen. Mein Code ist bis jetzt unten, funktioniert aber offensichtlich nicht wie beabsichtigt.

Ich vermute, dass mein Problem darin besteht, dass ich keine Binärdaten vom Server sende und eine Erläuterung / Hilfe benötige.

Hier ist mein Server ...

var fs = require('fs');
var WebSocketServer = require('ws').Server;

var wss = new WebSocketServer({port: 8080,host:"127.0.0.1"});
wss.on('connection', function(ws) {    
    var readStream = 
    fs.createReadStream("test.mp3", 
     {'flags': 'r',
      'encoding': 'binary', 
      'mode': 0666, 
      'bufferSize': 64 * 1024});

    readStream.on('data', function(data) {
        ws.send(data, {binary: true, mask: false});
    });
});

Und mein Klient ...

context = new webkitAudioContext();
var ws = new WebSocket("ws://localhost:8080");
ws.binaryType = 'arraybuffer';

ws.onmessage = function (evt) {
    context.decodeAudioData(
    evt.data,
        function(buffer) {
            console.log("Success");
        }, 
        function(error) {
            console.log("Error");
        });
};

Der Aufruf zur Dekodierung endet immer im Fehler-Callback. Ich gehe davon aus, dass dies daran liegt, dass es schlechte Daten empfängt.

Meine Frage ist also, wie ich die Datei korrekt als Binärdatei streamen kann.

Vielen Dank

Antworten auf die Frage(2)

Ihre Antwort auf die Frage