Apps con BitTorrent
Presentado por Luis Porras / @lporras16
Software Engineer at Speakup
¿Conocen BitTorrent?
- Protocolo para Intercambio de archivos peer-to-peer
- Comunmente usado para transferir archivos grandes
- Favorito de piratas
Creado por
Muerte de Un Grande
RENACE LA LEYENDA
Mega Search
Aclaraciones Importantes
Por favor NO APOYEN LA PIRATERIA
Esta charla no es para aprender a piratear
Yo no soy un pirata
Cómo funciona BitTorrent?
La forma tradicional de descargar Archivos
1 servidor, muchos clientes
Peer to Peer Network
Estructura de una Red BitTorrent
- Peers: (puntos) Todos los usuarios de la Red
- Leechers: (Sanguijuelas) Usuarios que descargan archivos y no contienen el archivo completo
- Seeders: (Semillas) Usuarios que contienen el archivo completo
- Trackers: (Rastreadores) Servidor especial que tiene información necesaría para que los peers se conecten unos a otros
The Swarm (Enjambre)
Los Usuarios que los trackers se encargan de buscar.
Analogía
Tracker, panal de abejas.
Enjambre, los usuarios.
La miel, el contenido del torrent
Limitaciones
Leeching
Normalmente los usuarios se desconectan rápidamente una vez obtenido la copia completa de su archivo.
Decentralización
|
HTTP |
Torrents |
Encontrar URIs |
Motores de Búsquedas, amigos |
Motores de Búsquedas, amigos |
Transferencia de Archivos |
Un Servidor HTTP |
Muchos BitTorrent Peers |
Encontrar Peers |
DNS (Domain Name System) |
Tracker Server |
Decentralización
|
HTTP |
Magnet Links |
Encontrar URIs |
Motores de Búsquedas, amigos |
Motores de Búsquedas, amigos |
Transferencia de Archivos |
Un Servidor HTTP |
Muchos BitTorrent Peers |
Encontrar Peers |
DNS (Domain Name System) |
DHT (Distributed Hash Table) |
Mejoras al Protocolo
Cada Nodo conserva info de los nodos vecinos
Evitando un cuello de botella en la caida de un Tracker
Los clientes Torrent tienen la funcionalidad de desactivar el DHT con "Private Flag"
Magnet URI
magnet:?xt=urn:btih:ef330b39f4801d25b4245212e75a38634bfc856e
Mejoras al Protocolo
Web Seeding
Busca combinar la potencia de la descarga directa del servidor con la del P2P.
Hay como mínimo una semilla completa de la que descargar siempre
WebSeed - HTTP/FTP Seeding (GetRight style)
Sitios Relacionados a Torrent
Búscadores
Does BitTorrent = Piracy? NO
Torrent Freak
PUT IO
Será posible ver un video mientras se descarga con BitTorrent?
BTAPPS LAB
BTAPP.js
Torque
//Se conecta a Torque (por Defecto)
var btapp = new Btapp;
btapp.connect();
O...
//Usando la sintáxis de plugin
var btapp = new Btapp;
btapp.connect({
product: 'Torque'
plugin: true
});
Conectarse a Clientes Torrents
uTorrent
var btapp = new Btapp;
btapp.connect({
product: 'uTorrent',
plugin: false,
pairing_type: 'native'
});
BitTorrent
var btapp = new Btapp;
btapp.connect({
product: 'BitTorrent',
plugin: false,
pairing_type: 'native'
});
Añadiendo un Torrent
var magnet = 'magnet:?xt=urn:btih:f0d665f264393a7dafd7d05d739e1097df652e80&dn=The.Yes.Men.Fix.The.World';
var callback = function() {
alert('añadido el torrent');
};
btapp.get('add').torrent({
url: magnet,
callback: callback
});
Archivos Torrents
var files = btapp.get('torrent').get('D9C70109CB05C181F9EC9373BE876A0D40C4D7B0').get('file');
> files.pluck('id');
["JSCONF.mp4", "Want.to.see.what.happens.next.url", "vodo.nfo"]
Cómo construyo una chrome Extension?
Chrome Extensions
Let's do this!
BTAPP.js
+ Chrome Extensions
+ Backbone.js + Handlebars + SPA
+ Bootstrap
+ Video.js
+ CORS + JSONP, trasnochos, etc
Torrent Chrome Extension
Lo logré
PopCorn Time
TorrentTV
Torrent Stream
Streaming Torrent Engine
Te permite acceder a los archivos dentro de torrents como node streams
Hecho por @mafintosh
Torrent Stream
Uso Básico
var torrentStream = require('torrent-stream');
var engine = torrentStream('magnet:link');
engine.on('ready', function() {
engine.files.forEach(function(file) {
console.log('filename:', file.name);
var stream = file.createReadStream();
// stream is readable stream to containing the file content
});
});
GITHUB
Peerflix
Streaming torrent client for Node.js
Usa a torrent stream
Te permite reproducir un video en VLC Player
npm install -g peerflix
// Desde la terminal
peerflix "magnet:?xt=urn:btih:ef330b39f4801d25b4245212e75a38634bfc856e" --vlc
GITHUB
Streaming BitTorrent