Skip to content
thammi edited this page Feb 4, 2015 · 3 revisions

Anmerkungen

  • Es werden an vielen Stellen Promises genutzt (statt Error- und Success-Events)
  • Labels für Streams und DataChannels werden mehr hervorgehoben um jeweils mehrere zu unterstützen
  • angebotene Streams und DataChannel werden über Signaling kommuniziert
  • zu LocalPeer hinzugefügte werden automatisch allen zugestellt (wie Status)
  • zusätzlich können einzelnen Peers noch Streams hinzugefügt werden (siehe DeferredStream unten, kommt erst per Offer/Answer)
  • Initialisierung jetzt ohne Session, grober Ablauf siehe Examples unten
  • UserMedia wird aus Room entfernt, LocalPeer (wird vom User erzeugt) ist Anlaufstelle für lokale Stream-Erstellung
  • 'new_peer' wird jetzt auch für RemotePeer geworfen die bereits im Raum waren wenn man joint (und heisst nicht mehr 'peer_joined')

Examples

Ein paar Beispiele wie man die API am Ende nutzt

local = new palava.LocalPeer(status)
local.addStream('video', media.createStream({audio: true, video: true})) # -> palava.Stream
local.addStream('video2', {audio: true, video: true}) # -> palava.Stream

local.addDataChannel('chat') # -> palava.DataChannel

room = new palava.Room(name, 'wss://machine.palava.tv', local, {stun: '', turn: ''})
room.join() # -> Promise

room.on 'new_peer', (peer) ->
remote.addDeferredStream('screen', stream)

peer.on 'new_stream', (stream) ->
    stream.attach($('video'))

peer.on 'new_data_channel', (channel) ->
    channel.send('Hello World')

API

palava.Channel

palava.Room

  • Konstruktor: Raumname, Channel oder String (-> Websocket Adresse), LocalPeer, Optionen (STUN, TURN, ...)
  • Funktionen:
  • join(): betritt den Raum, gibt Promise zurück
  • leave(): verlässt den Raum, gibt Promise zurück
  • destroy(): vertlässt Raum, schliesst Channel, deaktiviert Kamera, ...
  • ...
  • Events:
  • new_peer(peer): Peer betritt Raum oder man selbst betritt Raum in dem bereits Peers sind
  • ...

palava.Peer

  • Funktionen:
  • stream(label): Gibt den palava.Stream zu diesem Label oder undefined zurück
  • dataChannel(label): Gibt palava.DataChannel zu diesem Label oder undefined zurück
  • streams(): Gibt alle bekannten Streams zurück
  • dataChannels: Gibt alle bekannten DataChannels zurück

palava.LocalPeer

  • Konstruktor: Status
  • Funktionen:
  • addStream([label], stream|constraints): Fügt Media Stream zu der allen RemotePeer zur Verfügung gestellt wird. Stream kann anhand von Constraints selbst hergestellt werden. Gibt palava.Stream zurück
  • addDataChannel([label], [options]): Fügt einenen DataChannel der der allen RemotePeer zur Verfügung gestellt wird hinzu
  • Events:
  • keine?

palava.RemotePeer

  • Funktionen:
  • addDeferredStream([label], stream|constraints): Sendet einen lokalen Stream an den Peer. Warnung: Der Stream ist zu dem Zeitpunkt an dem new_peer geworfen wird noch nicht sichtbar
  • getDeferredStream(label): Gibt Promise auf palava.Stream zurück das aufgelöst wird wenn Offer/Answer gemacht wurde
  • Events:
  • new_stream(channel)
  • new_channel(channel)
  • left()
  • Anmerkungen:
  • offer wird erst gesendet wenn alle Streams bereit sind

palava.Stream

  • Funktionen:
  • wait(): Gibt Promise zurück das aufgelöst wird wenn der WebRTC Stream verfügbar ist
  • native(): Gibt Promise auf den native WebRTC Stream zurück
  • attach(dom, options): Gibt palava.MediaDomElement zurück
  • Events:
  • closed()
  • Member:
  • label
  • peer

palava.DataChannel

  • Funktionen:
  • send(): Sendet Daten (buffered), gibt Promise zurück das aufgelöst wird wenn Daten gesendet wurden
  • Events:
  • message(data): Einkommende Daten
  • closed()
  • Member:
  • label
  • peer

palava.MediaDomElement

  • Konstruktor: DOM Element, stream, Options
  • wait(): Warten bis Stream Daten liefert
  • mute(): Audio aus
  • copy(dom): Erzeugt weiteres mapping auf DOM
  • Anmerkungen
  • Helper der Streams auf / bindet
  • Kopieren (Seitenleiste und großes Video in der Mitte z.B.)
  • Platzhalter (laden, Fehler, ...)
  • Video automatisch spiegeln für lokales Video
  • OSD ausblenden (Bedienelemente im video-Tag)
  • Irgendwann Screenshots, Filter etc.