Get desktop application:
View/edit binary Protocol Buffers messages
* This is a response to an `offer` message. It contains the answer `SDP`. Part of the normal subscribe flow. A peer will subscribe to a streamer and depending on whether `offer_to_receive` is set, one peer will make an offer and the other should answer.
Should always be 'answer'
The WebRTC SDP payload
If being sent to a player this should be set to a valid player ID.
Specifies the minimum bitrate requested for streams.
Specifies the maximum bitrate requested for streams.
* This is just a helper message type that allows us to use a "base interface" in code to describe that all messages should at least have a 'type field'.
The type of the message.
* A config message is sent to each connecting peer when it connects to describe to them the setup of the signalling server they're connecting to.
Should always be 'config'
The user defined peer connnection options
The signalling protocol version the signalling server is using
* Message is forwarded to a connected SFU. Tells the SFU that the player requests data channels to the streamer.
Should always be 'dataChannelRequest'
* Message is consumed by the Signalling Server. Requests that the signalling server disconnect the given player matching the player ID.
Should always be 'disconnectPlayer'
The ID of the player to disconnect.
An optional reason string to send to the player.
* Message is consumed by the Signalling Server. Specifies an id for the streamer. This is used to uniquely identify multiple streamers connected to the same Signalling Server. Note: to preserve backward compatibility when Streamer IDs were optional, when a Streamer first connects it is assigned a temporary ID which allows use of older Streamers if needed. Note: Streamer IDs must be unique and so if the ID provided here clashes with an existing ID, the ID may be altered slightly (usually just an appended number). The streamer will be sent an `endpointIdConfirm` message to notify it of it's final ID.
Should always be 'endpointId'
The requested ID of the streamer.
The signalling protocol version the streamer is using
* A response to `endpointId` that will notify the streamer of its final ID given. Since streamer IDs must be unique the requested ID may not be available and may need to be altered.
Should always be 'endpointIdConfirm'
The final ID of the streamer.
* A single ICE candidate entry from WebRTC. Notifies a peer of a possible connection option to another peer.
Should always be 'iceCandidate'
The ICE candidate data from WebRTC
If being sent to a player this should be a valid player ID.
* A submessage that contains data from a WebRTC ICE candidate.
Used in:
* A request for a new streamer to give itself an ID. The flow for these messages should be connect->identify->endpointId->endpointIdConfirm
Should always be 'identify'
* Message is forwarded to a connected SFU. Sends a preferred layer index to a connected SFU for a specified player. Useful for switching between SFU quality layers to force a certain resolution/quality option either as part of UX or testing.
Should always be 'layerPreference'
The requested spatial layer
The requested temporal layer
The player ID this preference refers to
* A request to the signalling server to send the player a list of available streamers it could possibly subscribe to.
Should always be 'listStreamers'
* An offer message is an offer of a WebRTC stream. When a player subscribes to a streamer the streamer will offer the stream to the new player.
Should always be 'offer'
The SDP payload from WebRTC
If being sent to a player this should be a valid player ID
Indiates that this offer is coming from an SFU.
Indicates that the streamer is multiplexing data channels
Indicates the scalability mode of the video stream
* This is a user defined structure that is sent as part of the `config` message. Left empty here because everything is optional.
Used in:
(message has no fields)
* Message is forwarded to a player. Sends information to the player about what data channels to use for sending/receiving with the streamer.
Should always be 'peerDataChannels'
The player ID this message refers to.
The channel ID to use for sending data.
The channel ID to use for receiving data.
* Message is forwarded to a connected SFU. Tells the SFU that the player is ready for data channels to be negotiated.
Should always be 'peerDataChannelsReady'
* A keepalive ping message used to test that the connection is still open.
Should always be 'ping'
The current time
* A message sent to a streamer to notify it that a player has just subscribed to it.
Should always be 'playerConnected'
True if the player should be given a datachannel for stream control purposes.
True if the player connected is an SFU
The ID of the player that connected.
* DEPRECATED Message is sent to players to indicate how many currently connected players there are on this signalling server. (Note: This is mostly old behaviour and is not influenced by multi streamers or who is subscribed to what streamer. It just reports the number of players it knows about.)
Should always be 'playerCount'
The number of players connected.
* Message is used to notify a streamer that a player has unsubscribed/disconnected from the stream.
Should always be 'playerDisconnected'
The ID of the player that disconnected.
* Message is a reply to `ping` from a streamer. Replies with the time from the ping message.
Should always be 'pong'
The echoed time from the ping message
* Sent by the SFU to indicate that it is now streaming.
Should always be 'startStreaming'
* DEPRECATED Message is consumed by the signalling server. Will print out the provided stats data on the console.
Should always be 'stats'
The stats data to echo.
* Sent by the SFU to indicate that it is now no longer streaming.
Should always be 'stopStreaming'
* Message is forwarded to the streamer. Sends a request to the streamer to open up data channels for a given player.
Should always be 'streamerDataChannels'
The SFU the player is connected to
The channel ID to use for sending data.
The channel ID to use for receiving data.
* Message is used to notify players when a Streamer disconnects from the signalling server.
Should always be 'streamerDisconnected'
* Message is used to communicate to players that the streamer it is currently subscribed to is changing its ID. This allows players to keep track of it's currently subscribed streamer and allow auto reconnects to the correct streamer. This happens if a streamer sends an `endpointID` message after it already has an ID assigned. (Can happen if it is late to respond to the `identify` message and is auto assigned a legacy ID.)
Should always be 'streamerIdChanged'
The new ID of the streamer.
* Message is a reply to `listStreamers` from a player. Replies with a list of currently active streamers connected to this server.
Should always be 'streamerList'
A list of streamer IDs active on the server.
* Message is consumed by the signalling server. Tells the signalling server that the player requests to subscribe to the given stream.
Should always be 'subscribe'
The ID of the streamer the player wishes to subscribe to.
* Sent in response to a subscribe message when something goes wrong.
Should always be 'subscribeFailed'
A description of what went wrong.
* Message is consumed by the signalling server. Tells the signalling server that the player wishes to unsubscribe from the current stream. The player must have previously used the `subscribe` message for this to have any effect.
Should always be 'unsubscribe'