Streaming Binary con Node.js y WebSockets

He estado buscando en Google esto y mirando a mi alrededor el flujo de pila por un tiempo pero no he encontrado una solución, de ahí el post.

Estoy jugando con Node.js y WebSockets por curiosidad. Estoy tratando de transmitir algunos datos binarios (un mp3) al cliente. Mi código hasta ahora está abajo, pero obviamente no funciona como se esperaba.

Sospecho que mi problema es que en realidad no estoy enviando datos binarios desde el servidor y me gustaría alguna aclaración / ayuda.

Heres mi servidor ...

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

Y mi cliente ...

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

La llamada a decodificar siempre termina en la devolución de llamada de error. Supongo que esto se debe a que está recibiendo datos incorrectos.

¿Entonces mi pregunta es cómo transmitir correctamente el archivo como binario?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta