Realtime Messaging
The realtime messaging interface (RTM) allows to:
- setup the stream connection
- configure the recording upload destination
- retrieve state information
- controls the lifetime of the stream
Base message structure:
type
Type: STRING
Message type, as defined below.
client_id
Type: STRING
Client identity.
session_id
Type: STRING
ID of this session.
data
Type: DICTIONARY
Data of that message. Specific for each message type. As defined below.
Example for the base message:
{
"type": "session_start",
"client_id": "c-0",
"session_id": "s-1",
"data": { ... }
}
session_start
Starts a client session with an SDP offer and a webhook-URL.
Direction: client → server
sdp
Type: RTCSessionDescription
Session Description of the stream as returned from webrtc js api.
webhook_url
Type: STRING
(optional)
Webhook which will be called on different kind of events.
Example:
{
"type": "session_start",
"client_id": "client-3987830",
"session_id": "2633650b-9e24-4872-aec5-b39cdfc65ebf",
"data": {
"sdp": {
"type": "offer",
"sdp": "..."
},
"webhook_url": "https://yourserver.com/streamrec"
}
}
supervisor_join_session
Starts a supervisor session with sdp and session-id to be monitored.
Direction: client → server
sdp
Type:RTCSessionDescription
Session Description of the stream as returned from webrtc js api.
session_id_to_monitor
Type: STRING
SessionID of the client which will be monitored.
webhook_url
Type: STRING
(optional)
Webhook which will be called on different kind of events.
sdp_update
Delivers SDP updates in both directions.
Direction: client ↔ server
sdp
Type: RTCSessionDescription
Session Description of the stream as returned from webrtc js api.
{
"type": "sdp_update",
"client_id": "client-3987830",
"session_id": "2633650b-9e24-4872-aec5-b39cdfc65ebf",
"data": {
"sdp": {
"type": "answer",
"sdp": "..."
}
}
}
candidate
Delivers webrtc candidates in both directions. This is called the trickle features of webrtc.
Direction: client ↔ server
candidate
Type:RTCIceCandidate
Webrtc sdp candidate.
{
"client_id": "client-3987830",
"session_id": "2633650b-9e24-4872-aec5-b39cdfc65ebf",
"type": "candidate",
"data": {
"candidate": {
"candidate": "candidate:170793244 1 udp 2122194687 192.168.0.188 44360 typ host generation 0 ufrag AwAs network-id 1",
"sdpMid": "0",
"sdpMLineIndex": 0,
"usernameFragment": "AwAs"
}
}
}
recording_start
Start recording while providing an upload-url.
Direction: client → server
upload_url
Type: STRING
Upload URL. The Upload will be performed via PUT-method.
webhook_url
Type: STRING
(optional)
Set webhook URL for events for this recording.
Any response status code other than 200 that is received from the upload URL, will be considered as upload failed.
recording_stop
Stops the active recording.
Direction: client → server
recording_state
Informs client of new recording-id, and its state.
Direction: server → client
recording_id
Type: STRING
Identitiy of this recording.
state
Type: STRING
State of this recording.
Possible states are:
- STARTED
- STOPPED
- FAILED
session_stop
Direction: client → server
Note: A session can be stopped via disconnecting the WS channel as well. If a recording is still ongoing, it will be finished and uploaded properly.
session_state
Deliver state info for a session.
Direction: server → client Purpose: Give state info of the session.
state
Type: STRING
State of this session.
termination_cause
Type: STRING
(optional)
Cause of termination.
For possible states jump to the lifecycle section.
{
"type": "session_state",
"client_id": "client-3987830",
"session_id": "2633650b-9e24-4872-aec5-b39cdfc65ebf",
"data": {
"state": "TERMINATED",
"termination_cause": "TERM_BY_CLIENT"
}
}
msg ping
Sends a ping message to the server.
Direction: client → server
Note, that this is an application ping and does not use the websockets ping/pong mechanism.
msg pong
Reply to a ping.
Direction: server → client
Note, that this is an application ping and does not use the websockets ping/pong mechanism.