Потоковое двоичное с Node.js и WebSockets

Я гуглил это и некоторое время смотрел на stackoverflow, но не нашел решения - отсюда и пост.

Я играю с Node.js и WebSockets из любопытства. Я пытаюсь передать поток двоичных данных (mp3) клиенту. Мой код пока ниже, но, очевидно, не работает, как задумано.

Я подозреваю, что моя проблема в том, что я на самом деле не отправляю двоичные данные с сервера и хотел бы получить некоторые разъяснения / помощь.

Вот мой сервер ...

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});
    });
});

И мой клиент ...

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");
        });
};

Вызов для декодирования всегда заканчивается ошибкой обратного вызова. Я предполагаю, что это потому, что он получает плохие данные.

Итак, мой вопрос, как правильно передать файл в двоичном виде?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос