View Source Membrane.WebRTC.PhoenixSignaling.Socket (Membrane WebRTC plugin v0.25.3)
Phoenix Socket implementation which redirects all topics to a Phoenix Channel capable of processing WebRTC signaling messages.
Note: This module will be available in your code only if you add :phoenix
to the dependencies of of your root project.
To use PhoenixSignaling, you need to:
- Create Socket in your application endpoint, for instance:
socket "/signaling", Membrane.WebRTC.PhoenixSignaling.Socket, websocket: true, longpoll: false
- Create a Phoenix signaling channel with desired signaling ID and use it as
Membrane.WebRTC.Signaling.t()
forMembrane.WebRTC.Source
,Membrane.WebRTC.Sink
orBoombox
:signaling = Membrane.WebRTC.PhoenixSignaling.new("<signaling_id>") # use it with Membrane.WebRTC.Source: child(:webrtc_source, %Membrane.WebRTC.Source{signaling: signaling}) |> ... # or with Membrane.WebRTC.Sink: ... |> child(:webrtc_sink, %Membrane.WebRTC.Sink{signaling: signaling}) # or with Boombox: Boombox.run( input: {:webrtc, signaling}, output: ... )
- Create signaling channel with desired signaling ID:
signaling = PhoenixSignaling.new("signaling_id")
- Use the Phoenix Socket to exchange WebRTC signaling data:
let socket = new Socket("/singaling", {params: {token: window.userToken}}) socket.connect() let channel = socket.channel('signaling_id') channel.join() .receive("ok", resp => { console.log("Joined successfully", resp) // here you can exchange WebRTC data }) .receive("error", resp => { console.log("Unable to join", resp) })