JavaScript & jQuery

Peer.js: Peer-to-Peer mit WebRTC und JavaScript im Browser

27. Februar 2013
von

WebRTC ist eine mächtige Idee. Echtzeitkommunikation im Browser will sie ermöglichen. Google, Mozilla und Opera unterstützen das Projekt, die API wird derzeit von Chrome und den Nightlies von Firefox unterstützt. Das ist ja schon eingeschränkt genug. Das JavaScript-Projekt Peer.js ist noch eingeschränkter. Es läuft derzeit nur in Chrome Dev und Canary. Interessant ist es allemal.

peer
Ähm. Nein, um den hier geht es nicht… (Credits am Ende des Beitrags)

Peer.js – Clientside mit Server-Komponente

Peer.js setzt auf WebRTC auf und ermöglicht Peer-Verbindungen zwischen zwei Clients auf der Basis eindeutiger IDs. Das System wird sowohl auf der Server-Seite (mittels node.js), wie auch auf der Client-Seite als Library installiert. Der PeerServer dient dabei nur der Herstellung der Verbindung. Ist diese Verbindung einmal stabil, findet jeglicher Datentransfer lediglich zwischen den Clients statt.

peerjs-homepage

Aufgrund der miesen Implementation von WebRTC auch im Chrome kann Peer.js nur als Experiment bezeichnet werden. Allerdings ist es eines, dessen Erfolg nur eine Frage der Zeit ist.

Aktuell kann das Projekt nur eine Demo eines Chats vorweisen. Dieser wiederum funktioniert so, dass man eine ID eines Users eingeben muss, um die Verbindung herzustellen. Grundsätzlich ist die Thematik der ID-Übergabe natürlich mittels Programmierung zu regeln. Da es aber derzeit lediglich Demos gibt und das Projekt erst seit kurzem verfügbar ist, sollten wir die Geringfügigkeit der Belege verzeihen.

Peer.js – das Grundprinzip

Die Einbindung der Peer.js-Lösung ist einfach. Das größere Problem stellt der PeerServer dar. Auf der Client-Seite funktioniert das Grundprinzip so. Zunächst wird das Script eingebunden:

1
<script src="http://cdn.peerjs.com/0/peer.js"></script>

Der Peer wird so definiert:

1
2
3
4
5
6
7
8
9
<script>
  var peer = new Peer('someid', {key: 'apikey'});
  peer.on('connection', function(conn) {
    conn.on('data', function(data){
      // Will print 'hi!'
      console.log(data);
    });
  });
</script>

Ein Peer mit Verbindungswunsch definiert sich so:

1
2
3
4
5
6
7
<script>
  var peer = new Peer('anotherid', {key: 'apikey'});
  var conn = peer.connect('someid');
  conn.on('open', function(){
    conn.send('hi!');
  }); 
</script>

Wer sich erst einmal sanft dem Thema nähern möchte, will sicherlich nicht direkt Aufwand in die Errichtung eines eigenen PeerServers stecken. Da kommt es gerade recht, dass die Entwickler einen entsprechenden Cloud Service, kostenlos für Entwickler, im Angebot haben.

Wer nun glaubt, er könne so einen schicken eMule-Ersatz bauen, wird enttäuscht. Die maximale Größe aktuell tauschbarer Daten liegt bei ungefähr 1 Kilobyte, was wiederum im Wesentlichen an der Browserimplementierung von WebRTC liegt. Zudem wird bei “großen” Dateien, also um 1 kB, die Zuverlässigkeit der Übertragung zum Glücksspiel.

Peer.js wird programmiert von zwei Studenten der Berkeley Universität in Kalifornien, Michelle Bu und Eric Zhang. Zhang war Mitgründer des Startups Flotype, welches mittlerweile anders heißt. Zhang ist dort nicht mehr Teil des Teams. Natürlich ist er dennoch immer noch ein fähiger JavaScript-Entwickler.

Links zum Beitrag:

(Bildquelle für das Artikelbild: dirk@vorderstrasse.de via photopin cc)

ist seit 1994 im Netz unterwegs, aber bereits seit fast 30 Jahren in der IT daheim. Seit 2008 schreibt er für Dr. Web, seit 2012 ist er Chefredakteur des Magazins. Man findet ihn auch auf Twitter und Facebook, aktiver ist er allerdings auf Google+.

Tags: , , , ,

Ein Kommentar? Schön!

Wir freuen uns immer über Leser, die durch nützliche und konstruktive Beiträge zum Thema eine Diskussion anstoßen oder den Artikel mit weiteren Informationen anreichern. Alle Kommentare werden in diesem Sinne moderiert. Zum Kommentar-Fairplay gehört für uns auch der Einsatz von rel="nofollow". Bitte verwenden Sie zudem als Namen weder eine Domain noch ein spamverdächtiges Wort. Vielen Dank!