WebRTC
Version 7 (Saúl Ibarra Corretgé, 07/30/2015 05:00 pm) → Version 8/33 (Saúl Ibarra Corretgé, 07/30/2015 05:32 pm)
h1. SylkServer WebRTC gateway application
Starting with version 3.0.0 SylkServer includes a WebRTC gateway application. The application implements a WebSocket protocol which WebRTC endpoints can use in order to interact with the SIP world.
h2. Architecture
TODO
h2. WebSocket API
SylkServer offers the WebSocket API in order to interact with the WebRTC gateway in the @ws(s)://hostname:port/webrtcgateway/ws@ endpoint. Both WebSocket and Secure WebSocket are supported, depending on how SylkServer was configured, check the configuration section.
The API uses JSON messages and is modeled around 2 concepts: requests and events.
A request represents an action which SylkServer should perform, and it's identified with a transaction ID which the user must provide. SylkServer will reply with either an 'ack' or an 'error' response, with the associated transaction ID. An example transaction is that of adding an account.
Events are notifications sent by SylkServer to the client. They are the result of some change triggered by a user action, but they don't have a transaction ID associated with them. An example event would be the connection state changed event.
All messages are valid JSON and contain the "sylkrtc" key indicating the message type. A message without the "sylkrtc" key is an invalid message.
h3. Establishing the connection
In order to connect to SylkServer to begin to use the API a WebSocket connection must be established, using the @sylkRTC-1@ subprotocol. Example:
<pre>
var conn = new WebSocket('wss://example.com/webrtcgateway/ws', 'sylkRTC-1');
</pre>
After the connection is established, a 'ready' event will be sent to the client, indicating that the connection is ready to be used:
<pre>
{
"sylkrtc": "event",
"event": "ready"
}
</pre>
Example:
<pre>
var conn = new WebSocket('wss://example.com/webrtcgateway/ws', 'sylkRTC-1');
conn.onmessage = function(event) {
var message = JSON.parse(event.data);
switch (message.sylkrtc) {
case 'event':
if (message.event === 'ready') {
console.log('Ready to rock!');
}
break;
default:
console.log('Received message type: ' + message.sylkrtc);
break;
}
};
</pre>
h3. Account management
Multiple accounts can be managed from a single WebSocket connection. 2 types of requests are used to manage accounts: "add_account" and "remove_account". Once an account has been added it can be registered via SIP using the "register" command, and unregistered using the "unregister" command. TODO
h4. add_account
Configuring an account, request:
<pre>
{'account': 'saghul@sip2sip.info',
'password': '884edfee38ed471b8a15006700139485',
'sylkrtc': 'add_account',
'transaction': '04013f0f-25bb-4082-a02f-44399df492ff'}
</pre>
Response:
<pre>
{'sylkrtc': 'ack',
'transaction': '04013f0f-25bb-4082-a02f-44399df492ff'}
</pre>
The password MUST be in "HA1 format":https://en.wikipedia.org/wiki/Digest_access_authentication#Overview
h3. Calling
TODO
h2. Configuration
TODO
h2. Client libraries
In order to interact with SylkServer's WebRTC gateway, we provide the "sylkrtc.js":http://projects.ag-projects.com/projects/sylkrtc JavaScript library. It implements the API described in this document in an easy to use manner. Check the README file in the project for the JavaScript API documentation.
Starting with version 3.0.0 SylkServer includes a WebRTC gateway application. The application implements a WebSocket protocol which WebRTC endpoints can use in order to interact with the SIP world.
h2. Architecture
TODO
h2. WebSocket API
SylkServer offers the WebSocket API in order to interact with the WebRTC gateway in the @ws(s)://hostname:port/webrtcgateway/ws@ endpoint. Both WebSocket and Secure WebSocket are supported, depending on how SylkServer was configured, check the configuration section.
The API uses JSON messages and is modeled around 2 concepts: requests and events.
A request represents an action which SylkServer should perform, and it's identified with a transaction ID which the user must provide. SylkServer will reply with either an 'ack' or an 'error' response, with the associated transaction ID. An example transaction is that of adding an account.
Events are notifications sent by SylkServer to the client. They are the result of some change triggered by a user action, but they don't have a transaction ID associated with them. An example event would be the connection state changed event.
All messages are valid JSON and contain the "sylkrtc" key indicating the message type. A message without the "sylkrtc" key is an invalid message.
h3. Establishing the connection
In order to connect to SylkServer to begin to use the API a WebSocket connection must be established, using the @sylkRTC-1@ subprotocol. Example:
<pre>
var conn = new WebSocket('wss://example.com/webrtcgateway/ws', 'sylkRTC-1');
</pre>
After the connection is established, a 'ready' event will be sent to the client, indicating that the connection is ready to be used:
<pre>
{
"sylkrtc": "event",
"event": "ready"
}
</pre>
Example:
<pre>
var conn = new WebSocket('wss://example.com/webrtcgateway/ws', 'sylkRTC-1');
conn.onmessage = function(event) {
var message = JSON.parse(event.data);
switch (message.sylkrtc) {
case 'event':
if (message.event === 'ready') {
console.log('Ready to rock!');
}
break;
default:
console.log('Received message type: ' + message.sylkrtc);
break;
}
};
</pre>
h3. Account management
Multiple accounts can be managed from a single WebSocket connection. 2 types of requests are used to manage accounts: "add_account" and "remove_account". Once an account has been added it can be registered via SIP using the "register" command, and unregistered using the "unregister" command. TODO
h4. add_account
Configuring an account, request:
<pre>
{'account': 'saghul@sip2sip.info',
'password': '884edfee38ed471b8a15006700139485',
'sylkrtc': 'add_account',
'transaction': '04013f0f-25bb-4082-a02f-44399df492ff'}
</pre>
Response:
<pre>
{'sylkrtc': 'ack',
'transaction': '04013f0f-25bb-4082-a02f-44399df492ff'}
</pre>
The password MUST be in "HA1 format":https://en.wikipedia.org/wiki/Digest_access_authentication#Overview
h3. Calling
TODO
h2. Configuration
TODO
h2. Client libraries
In order to interact with SylkServer's WebRTC gateway, we provide the "sylkrtc.js":http://projects.ag-projects.com/projects/sylkrtc JavaScript library. It implements the API described in this document in an easy to use manner. Check the README file in the project for the JavaScript API documentation.