Search
Write a publication
Pull to refresh

BinaryJS — двунаправленная передача двоичных данных через WebSocket-ы

Не давно наткнулся на библиотеку которая позволяет отправлять двоичные данные через 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 серевр

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-а.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.