-
-
Notifications
You must be signed in to change notification settings - Fork 3
Refactor
thammi edited this page Feb 4, 2015
·
3 revisions
- 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')
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')
- 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 - ...
- 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
- 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?
- 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
- 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
- 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
- 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.