Analyse der „Signalling-On-The-Fly“-Interoperabilitäts-Lösung für WebRTC sowie Entwurf und prototypische Realisierung eines optimierten Signalisierungskonzeptes
-
Gliederung
-
Gliederung
Einleitung
Zielstellung
Nachladeproblematik
Signalisierungsprotokolle
Frameworkmodule
Signalisierung zwischen WONDERv2-Frameworks
Login
Call
Datenkanal
Fazit
Ausblick
-
Einleitung
SigOFly-Mechanismus
Dynamisches Nachladen von Signalisierungsprotokollen
Messaging Stubs stellen Schnittstellen zu den Signalisierungsprotokollen bereit
Javascript-Code
Verbindung zwischen Framework und Signalisierungsprotokoll
Verbindung zwischen Netzwerk und Signalisierungsprotokoll
-
WONDERv1-Framework
Javascript-Framework zur Nutzung von SigOFly und WebRTC
Messaging Stubs wurden dynamisch nachgeladen
Ermöglicht Kommunikation unter WebRTC-Anwendungen in verschiedenen Signalisierungsdomänen
-
Zielstellung
-
Zielstellung
Modularisierung des WONDER-Frameworks
Separierung logischer Komponenten
Erstellung einfacher Schnittstellen für Anwendungsentwickler
Realisierung von mehr als zwei Codecs für den Datenkanal
Verbesserung des Identitätsmanagements
Einfache Gestaltung des Setup
Zielarchitektur
-
Nachlade-problematik
- Danny ist eher auf Code-Teil eingegangen
- Ich werde eher auf High-Level-Sicht eingehen
Signalisierungsprotokolle
Stubinstanziierung
- Immer der Letzte gewinnt
- Mit Require.js tritt das auch auf, wenn Stubs Namen haben
#### Lösung:
- URIs referenzieren Stubs anstatt Namen
Signalisierungsprotokolle
Signalisierungsservernutzung
- Immer der eigene Stub gewinnt, da "Require.js module.config().connectURL Variable"
#### Lösung:
- URIs der MsgSrv in Identität vorhalten
Signalisierungsprotokolle
Schnittstellentiefe im Stub
- Idp.getInstance().createIdentity(function(identity){...that.basestub.send(message)...})
#### Lösung:
- Speicherung einer Funktion und einer URI im Stub
- WONDERinterne funktionen werden von WONDER ausgeführt
Frameworkmodule WONDERv1
- Viele Abhängigkeiten
- Große Aufruftiefe
#### Lösung:
- Auflösen der gegenseitigen Abhängigkeiten
- Spezialfunktionen mit Rückgabewerten
Frameworkmodule WONDERv2
- zusätliche Abstraktionsschicht WONDER-Klasse
- wenig gegenseitige Abhängigkeiten (Aufrufe)
- Ansicht zeigt Aufrufabhängigkeiten für Two-Party-Call
Signalisierung zwischen WONDERv2-Frameworks
- High-Level-Sicht
Login WONDERv1
- idp.createIdentity muss vom Implementierer kommen
- Stub URIs kommen mit der Identität
- MsgSrv Addresse im Stub erscheint erstmal positiv, da man sich die nicht erst von woanders holen muss
Login WONDERv2
- wonder.login ähnlich wie bei WONDERv1
- Identität hat mehr Informationen als bei WONDERv1
Gegenüberstellung Login
WONDERv1 - WONDERv2
- jetzt möglich verschiedene MsgSrv mit einem Stub zu kontaktieren
- für jede Identität zusätzliche Codecs vorhanden
Call Alice to Bob WONDERv1
- Alice fragt eigenen IdP
- Wenn Bob in anderer Domäne, dann muss die Domäne im IdP sein
- kein standardisierter IdP, keine vernetzung mit anderen IdPs
Call Alice to Bob WONDERv2
- keine tiefe Schnittstelle
- nicht nur Stur-URIs, sondern auch MsgSrv-URIs und Codec-URIs
Gegenüberstellung Call Alice to Bob
WONDERv1 - WONDERv2
-
Datachannelmessage WONDERv1
Datachannelmessage WONDERv2
Gegenüberstellung Datachannelmessage
WONDERv1 - WONDERv2
Datenkanalzuordnung
- from alice to bob
- from bob to alice ... enden nicht auf gleichem codec
Fazit
-
Fazit
Modularisierung verbessert
Ausführliche Dokumentation vorhanden
Automatisierung in der Entwicklung erreicht
Unabhängige Stubs erstellt
Implementierungsschnittstellen vereinfacht
Erste Schritte mit WONDER vereinfacht
Nachladen von Codecs, Module und Stubs ermöglicht
Wiederverwendbarkeit von Stubs erreicht
Separate Server bzw. logische Komponenten vorhanden
Vorbereitung für Multi-Party-Calls getroffen
Schnittstellentiefe verringert
Medienanforderungen vereinfacht
Mehrere Codecs für Datenkanäle
Unabhängige Stubs: verschiedene Messaging Server möglich, verschiede Domänen
Wiederverwendbare Stubs: Stubs können losgelöst von Wonder funktionieren
Erste Schritte: wonder.call() und Server Setup einfach
Ausblick
Ausblick
Parallele Nutzung mehrerer Datenkanäle mit unterschiedlichen Payload-Typen
Übertragung von Statusinformationen
Unterstützung von Multi-Party-Konversationen
Nutzung von ECMA-Script 6 Import / Export
Authentifizierung mit OpenID Connect
- Satusinfos: Presence, Frameworkstatus, Verbindungsstatus