Open Source im professionellen Einsatz
Linux-Magazin 08/2013
© Danil Chepko, 123RF.com

© Danil Chepko, 123RF.com

Web RTC: Videotelefonie ohne Browser-Plugin

Direkter Draht

Das Protokoll Web RTC macht den Browser zur Kommunikationszentrale: Ganz ohne Plugins erledigt er Videochats oder Datei-Übertragungen über Peer-to-Peer-Verbindungen.

485

Wer sich bisher mit Videotelefonie und anderen Formen der Echtzeitkommunikation beschäftigte, landete fast automatisch bei Skype und Konsorten. Im Webbrowser ging Vergleichbares nur mit Flash- oder Java-Plugins. In der jüngsten Browsergeneration hat sich das geändert: Ergänzend zu HTML 5 bringt Web RTC (Web Realtime Communication, [1]) die Echtzeitkommunikation nativ in den Webbrowser.

Mit dem Protokoll lassen sich Videochats durchführen oder Anwendungsdaten austauschen. Die Kommunikation erfolgt dabei direkt von Browser zu Browser. Dieser Artikel zeigt anhand eines Internet-Videochats, wie man Web RTC im Zusammenspiel von HTML, Javascript, CSS und Node.js anwendet.

Web RTC tragen die Browserhersteller Google, Mozilla und Opera gemeinsam. Obwohl die Spezifikation noch nicht abgeschlossen ist, unterstützen die Webbrowser Google Chrome und Mozilla Firefox ab Version 22 Web RTC bereits weitestgehend. Es handelt sich um einen freien Standard, der in einer Reihe von Dokumenten [2] der IETF beschrieben ist. Dem W3C liegt ein Entwurf für eine Programmierschnittstelle [3] für Web RTC im Browser vor.

Neue Möglichkeiten

Die Möglichkeiten von Web RTC in Kombination mit weiteren Technologien demonstriert Mozilla in einem Video [4]. Es zeigt einen Video-Anruf von einem Firefox-Browser auf ein Mobiltelefon über das öffentliche Telefonnetz. Web RTC ist allerdings nicht unumstritten: Microsoft etwa hält es für zu kompliziert und hat mit UC-RTC [5] einen eigenen Entwurf zur Echtzeitkommunikation in Browsern vorgelegt.

Abbildung 1 zeigt den Datenfluss während einer Web-RTC-Sitzung. Anwendungs- und Konfigurationsdaten gehen getrennte Wege: Der Server fungiert als Router, der Konfigurationsdaten wie beispielsweise IP-Adressen oder Angaben zu Video- und Audioformaten von dem einem Browser entgegennimmt und an den anderen weiterleitet. Web RTC nennt diesen Prozess Signaling. Zur Übertragung der Konfigurationsdaten bieten sich die Protokolle Websocket oder HTTP an, zu ihrer Strukturierung die Javascript Object Notation (Json).

Abbildung 1: Konfigurations- und Anwendungsdaten gehen bei Web RTC getrennte Wege: Die Konfigurationsdaten vermittelt ein zwischengeschalteter Server, die Anwendungsdaten überträgt das Protokoll von Peer zu Peer.

Nach dem Austausch der IP-Adressen über den Signaling-Server bauen die Browser untereinander wie in Abbildung 1 eine Peer-to-Peer-Verbindung auf. Diese überträgt die Anwendungsdaten mittels UDP oder TCP direkt zwischen den Browsern, was Zeit und Datenverkehr spart.

Der Weg durchs Netz

Beim Verbindungsaufbau überwindet Web RTC zwischengeschaltete NAT-Router (Network Address Translation) oder Firewalls durch den Einsatz von ICE (Interactive Connectivity Establishment, [6]). ICE beschafft taugliche IP-Adressen und Ports für das Versenden und Empfangen von Daten über Peer-to-Peer-Verbindungen.

Zunächst versucht ICE mittels STUN (Session Traversal Utilities for NAT, [7]) IP-Adresse und Port zu ermitteln. Dazu sendet es eine Nachricht an einen öffentlichen STUN-Server und erhält die Absenderadresse zurück. Verbietet aber beispielsweise der NAT-Router STUN, so kommen IP-Adresse und Port von einem Relayserver im Internet mittels TURN (Traversal Using Relays around NAT, [8]) zur Anwendung. ICE meldet die geeigneten IP-Adressen und Ports an Web RTC, indem es das Ereignis »onicecandidate« auslöst. Die Daten sind zusammen mit dem zu verwendenden Protokoll – UDP oder TCP – in ein Objekt vom Typ ICE-Kandidat verpackt.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • ECMA-Script 6

    Der kommende Sprachstandard ECMA-Script 6 beseitigt viele historische Javascript-Eigenheiten. Die bisher vermissten Klassen, Module und Default-Parameter erleichtern das Coden vor allem den Umsteigern von anderen Programmiersprachen.

  • Signal erlaubt verschlüsselte Videochats

    Der verschlüsselnde Messenger Signal bietet nun für Android und I-OS offiziell Ende-zu-Ende-verschlüsselte Videotelefonate an. Das Feature hat die Betaphase beendet, zugleich versprechen die Signal-Macher eine bessere Qualität für Sprachanrufe.

  • HTML-5-DRM

    Im Rahmen von HTML 5 erhalten Webbrowser die Fähigkeit, Inhalte zu verschlüsseln. Das Sicherheitsfeature hat sich nun zum Politikum entwickelt, denn die Anbieter von digitalen Inhalten möchten es für Digital Rights Management (DRM) verwenden. Hier ein freier Blick auf die Technik.

  • React

    Vom Unternehmen Facebook kommt das quelloffene Javascript-Framework React, das Weboberflächen geschickt mit Datenschätzen verknüpft. Insbesondere die Renderfunktion macht sich dabei nützlich.

  • Meteor

    Javascript sowohl im Browser als auch auf dem Server: Das Webframework Meteor verspricht Anwendungen aus einem Guss, die sich dank vieler fertiger Pakete rasch programmieren lassen.

comments powered by Disqus

Ausgabe 09/2017

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.