Не давно наткнулся на библиотеку которая позволяет отправлять двоичные данные через Javascript. Долгое время тому назад, когда у меня в первые возникла такая задача пришел к выводу что существующие на тот момент технологии не могли передавать двоичные данные, аудио, видео через Javascript.
Решением задачи было использование Flash-а или Java апплетов. Похоже, что это перестает быть актуальным. Начиная с Chrome 15 +, Firefox 11 +, Internet Explorer 10 и Safari последней версии, можно с уверенностью сказать, что передача двоичных данных через Javascript уже не мечта.

BinaryJS представляет собой framework, который использует WebSocket-ы для отправки данных, для потоковой передачи и для поддержания канала двунаправленного обмена данными между Javascript-ом и Node.js.
Сериализация по типу BinaryPack быстра, является бинарной и совместимо с JSON-ом. Framework умеет буферизировать большие объемы данных для повышения производительности потоковой передачи данных.
Данные передаются одновременно по мультиплексной сети WebSocket. API поддерживает и такие команды, как «пауза», «восстановить» и «конец», пока BinaryJS имеет на исполнение хоть один открытый канал.
Node.js серевр
Браузер
Больше информации можете найти на родном сайте framework-а.
Решением задачи было использование Flash-а или Java апплетов. Похоже, что это перестает быть актуальным. Начиная с Chrome 15 +, Firefox 11 +, Internet Explorer 10 и Safari последней версии, можно с уверенностью сказать, что передача двоичных данных через Javascript уже не мечта.

BinaryJS представляет собой framework, который использует WebSocket-ы для отправки данных, для потоковой передачи и для поддержания канала двунаправленного обмена данными между Javascript-ом и Node.js.
Сериализация по типу BinaryPack быстра, является бинарной и совместимо с JSON-ом. Framework умеет буферизировать большие объемы данных для повышения производительности потоковой передачи данных.
Данные передаются одновременно по мультиплексной сети WebSocket. API поддерживает и такие команды, как «пауза», «восстановить» и «конец», пока BinaryJS имеет на исполнение хоть один открытый канал.
Пример приложения типа клиент — сервер
Node.js серевр
var server = BinaryServer({port: 9000});
server.on('connection', function(client){
client.on('stream', function(stream, meta){
var file = fs.createWriteStream(meta.file);
stream.pipe(file);
});
});
Браузер
var client = BinaryClient('ws://localhost:9000');
client.on('open', function(stream){
var stream = client.createStream({file: 'hello.txt'});
stream.write('Hello');
stream.write('World!');
stream.end();
});
Больше информации можете найти на родном сайте framework-а.