|
@@ -1,8 +1,17 @@
|
|
|
<?xml version="1.0" encoding="UTF-8" ?>
|
|
|
<class name="WebRTCPeerConnection" inherits="Reference" category="Core" version="3.2">
|
|
|
<brief_description>
|
|
|
+ Interface to a WebRTC peer connection.
|
|
|
</brief_description>
|
|
|
<description>
|
|
|
+ A WebRTC connection between the local computer and a remote peer. Provides an interface to connect, maintain and monitor the connection.
|
|
|
+
|
|
|
+ Setting up a WebRTC connection between two peers from now on) may not seem a trival task, but it can be broken down into 3 main steps:
|
|
|
+ - The peer that wants to initiate the connection ([code]A[/code] from now on) creates an offer and send it to the other peer ([code]B[/code] from now on).
|
|
|
+ - [code]B[/code] receives the offer, generate and answer, and sends it to [code]B[/code]).
|
|
|
+ - [code]A[/code] and [code]B[/code] then generates and exchange ICE candiates with each other.
|
|
|
+
|
|
|
+ After these steps, the connection should become connected. Keep on reading or look into the tutorial for more information.
|
|
|
</description>
|
|
|
<tutorials>
|
|
|
</tutorials>
|
|
@@ -17,12 +26,14 @@
|
|
|
<argument index="2" name="name" type="String">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Add an ice candidate generated by a remote peer (and received over the signaling server). See [signal ice_candidate_created].
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="close">
|
|
|
<return type="void">
|
|
|
</return>
|
|
|
<description>
|
|
|
+ Close the peer connection and all data channels associated with it. Note, you cannot reuse this object for a new connection unless you call [method initialize].
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="create_data_channel">
|
|
@@ -35,18 +46,38 @@
|
|
|
}">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Returns a new [WebRTCDataChannel] (or [code]null[/code] on failure) with given [code]label[/code] and optionally configured via the [code]options[/code] dictionary. This method can only be called when the connection is in state [constant STATE_NEW].
|
|
|
+ There are two ways to create a working data channel: either call [method create_data_channel] on only one of the peer and listen to [signal data_channel_received] on the other, or call [method create_data_channel] on both peers, with the same values, and the [code]negotiated[/code] option set to [code]true[/code].
|
|
|
+ Valid [code]options[/code] are:
|
|
|
+ [code]
|
|
|
+ {
|
|
|
+ "negotiated": true, # When set to true (default off), means the channel is negotiated out of band. "id" must be set too. data_channel_received will not be called.
|
|
|
+ "id": 1, # When "negotiated" is true this value must also be set to the same value on both peer.
|
|
|
+
|
|
|
+ # Only one of maxRetransmits and maxPacketLifeTime can be specified, not both. They make the channel unreliable (but also better at real time).
|
|
|
+ "maxRetransmits": 1, # Specify the maximum number of attempt the peer will make to retransmits packets if they are not acknowledged.
|
|
|
+ "maxPacketLifeTime": 100, # Specify the maximum amount of time before giving up retransmitions of unacknowledged packets (in milliseconds).
|
|
|
+ "ordered": true, # When in unreliable mode (i.e. either "maxRetransmits" or "maxPacketLifetime" is set), "ordered" (true by default) specify if packet ordering is to be enforced.
|
|
|
+
|
|
|
+ "protocol": "my-custom-protocol", # A custom sub-protocol string for this channel.
|
|
|
+ }
|
|
|
+ [/code]
|
|
|
+ NOTE: You must keep a reference to channels created this way, or it will be closed.
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="create_offer">
|
|
|
<return type="int" enum="Error">
|
|
|
</return>
|
|
|
<description>
|
|
|
+ Creates a new SDP offer to start a WebRTC connection with a remote peer. At least one [WebRTCDataChannel] must have been created before calling this method.
|
|
|
+ If this functions returns [code]OK[/code], [signal session_description_created] will be called when the session is ready to be sent.
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="get_connection_state" qualifiers="const">
|
|
|
<return type="int" enum="WebRTCPeerConnection.ConnectionState">
|
|
|
</return>
|
|
|
<description>
|
|
|
+ Returns the connection state. See [enum ConnectionState].
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="initialize">
|
|
@@ -57,12 +88,29 @@
|
|
|
}">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Re-initialize this peer connection, closing any previously active connection, and going back to state [constant STATE_NEW]. A dictionary of [code]options[/code] can be passed to configure the peer connection.
|
|
|
+ Valid [code]options[/code] are:
|
|
|
+ [code]
|
|
|
+ {
|
|
|
+ "iceServers": [
|
|
|
+ {
|
|
|
+ "urls": [ "stun:stun.example.com:3478" ], # One or more STUN servers.
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "urls": [ "turn:turn.example.com:3478" ], # One or more TURN servers.
|
|
|
+ "username": "a_username", # Optional username for the TURN server.
|
|
|
+ "credentials": "a_password", # Optional password for the TURN server.
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ [/code]
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="poll">
|
|
|
<return type="int" enum="Error">
|
|
|
</return>
|
|
|
<description>
|
|
|
+ Call this method frequently (e.g. in [method Node._process] or [method Node._fixed_process]) to properly receive signals.
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="set_local_description">
|
|
@@ -73,6 +121,8 @@
|
|
|
<argument index="1" name="sdp" type="String">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Sets the SDP description of the local peer. This should be called in response to [signal session_description_created].
|
|
|
+ If [code]type[/code] is [code]answer[/code] the peer will start emitting [signal ice_candidate_created].
|
|
|
</description>
|
|
|
</method>
|
|
|
<method name="set_remote_description">
|
|
@@ -83,6 +133,9 @@
|
|
|
<argument index="1" name="sdp" type="String">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Sets the SDP description of the remote peer. This should be called with the values generated by a remote peer and received over the signaling server.
|
|
|
+ If [code]type[/code] is [code]offer[/code] the peer will emit [signal session_description_created] with the appropriate answer.
|
|
|
+ If [code]type[/code] is [code]answer[/code] the peer will start emitting [signal ice_candidate_created].
|
|
|
</description>
|
|
|
</method>
|
|
|
</methods>
|
|
@@ -91,6 +144,8 @@
|
|
|
<argument index="0" name="channel" type="Object">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Emitted when a new in-band channel is received, i.e. when the channel was created with [code]negotiated: false[/code] (default).
|
|
|
+ The object will be an instance of [WebRTCDataChannel]. You must keep a reference of it or it will be closed automatically. See [method create_data_channel]
|
|
|
</description>
|
|
|
</signal>
|
|
|
<signal name="ice_candidate_created">
|
|
@@ -101,6 +156,7 @@
|
|
|
<argument index="2" name="name" type="String">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Emitted when a new ICE candidate has been created. The three parameters are meant to be passed to the remote peer over the signaling server.
|
|
|
</description>
|
|
|
</signal>
|
|
|
<signal name="session_description_created">
|
|
@@ -109,21 +165,28 @@
|
|
|
<argument index="1" name="sdp" type="String">
|
|
|
</argument>
|
|
|
<description>
|
|
|
+ Emitted after a successful call to [method create_offer] or [method set_remote_description] (when it generates an answer). The parameters are meant to be passed to [method set_local_description] on this object, and sent to the remote peer over the signaling server.
|
|
|
</description>
|
|
|
</signal>
|
|
|
</signals>
|
|
|
<constants>
|
|
|
<constant name="STATE_NEW" value="0" enum="ConnectionState">
|
|
|
+ The connection is new, data channels and an offer can be created in this state.
|
|
|
</constant>
|
|
|
<constant name="STATE_CONNECTING" value="1" enum="ConnectionState">
|
|
|
+ The peer is connecting, ICE is in progress, non of the transports has failed.
|
|
|
</constant>
|
|
|
<constant name="STATE_CONNECTED" value="2" enum="ConnectionState">
|
|
|
+ The peer is connected, all ICE transports are connected.
|
|
|
</constant>
|
|
|
<constant name="STATE_DISCONNECTED" value="3" enum="ConnectionState">
|
|
|
+ At least one ICE transport is disconnected.
|
|
|
</constant>
|
|
|
<constant name="STATE_FAILED" value="4" enum="ConnectionState">
|
|
|
+ One or more of the ICE transports failed.
|
|
|
</constant>
|
|
|
<constant name="STATE_CLOSED" value="5" enum="ConnectionState">
|
|
|
+ The peer connection is closed (after calling [method close] for example).
|
|
|
</constant>
|
|
|
</constants>
|
|
|
</class>
|