WebRTCPeerConnection

Inherits: Reference < Object

Inherited By: WebRTCPeerConnectionGDNative

与WebRTC对等体连接的接口。

描述

本地计算机和远程对等体之间的WebRTC连接。提供一个接口来连接、维护和监控连接。

从当前开始,在两个对等体之间建立WebRTC连接,这不是一项简单的任务,但它可以分解为3个主要步骤。

  • 想要启动连接的对等体(A从现在开始)创建一个提交,并将其发送给另一个对等体(B从现在开始)。

  • B收到要约,生成和回答,并将其发送给A)。

  • AB然后生成并相互交换ICE候选。

在这些步骤之后,连接应该成功建立。继续阅读或查看教程以了解更多信息。

方法

Error

add_ice_candidate ( String media, int index, String name )

void

close ( )

WebRTCDataChannel

create_data_channel ( String label, Dictionary options={ } )

Error

create_offer ( )

ConnectionState

get_connection_state ( ) const

Error

initialize ( Dictionary configuration={ } )

Error

poll ( )

Error

set_local_description ( String type, String sdp )

Error

set_remote_description ( String type, String sdp )

信号

  • data_channel_received ( Object channel )

当收到一个新的带内通道时发出,即在通道是用negotiated: false(默认)。

该对象将是WebRTCDataChannel的一个实例。你必须保持它的引用,否则它将被自动关闭。参阅create_data_channel


当新的ICE候选者被创建时触发。这三个参数是为了通过信号服务器传递给远程对等体。


在成功调用create_offerset_remote_description后触发,当它产生一个应答时。这些参数是为了传递给这个对象上的set_local_description,并通过信号服务器发送给远程对等体。

枚举

enum ConnectionState:

  • STATE_NEW = 0 —- 连接是新的,数据通道和提交可以在这种状态下创建。

  • STATE_CONNECTING = 1 —- 对等体正在连接,ICE正在进行中,没有任何传输失败。

  • STATE_CONNECTED = 2 —- 对等体已连接,所有的ICE传输都已连接。

  • STATE_DISCONNECTED = 3 —- 至少有一个ICE传输被断开连接。

  • STATE_FAILED = 4 —- 一个或更多的ICE传输失败。

  • STATE_CLOSED = 5 —- 对等连接已关闭,例如在调用close后。

方法说明

添加一个由远程对等体产生的冻结候选,并通过信令服务器接收。请参阅ice_candidate_created


  • void close ( )

关闭对等体连接和与之相关的所有数据通道。

注意:你不能为一个新的连接重复使用这个对象,除非你调用initialize


返回新的 WebRTCDataChannel,或在失败时返回 null,具有给定的 label,并通过 options 字典进行配置。这个方法只有在连接处于 STATE_NEW 状态时才能被调用。

有两种方法来创建工作数据通道:要么只在其中一个对等体上调用 create_data_channel,并在另一个对等体上监听data_channel_received,要么在两个对等体上调用 create_data_channel,数值相同,并将 negotiated 选项设置为 true

有效的options是:

  1. {
  2. "negotiated": true, # 当设置为 "true"时,默认关闭,意味着该通道是在频带外协商的。"id"也必须被设置。"data_channel_received" 将不会被调用。
  3. "id":1, # 当 "negotiated"为真时,这个值也必须被设置为两个对等体的相同值。
  4. # 只能指定maxRetransmits和maxPacketLifeTime中的一个,不能同时指定。它们会使信道变得不可靠,但在实时性方面会更好。
  5. "maxRetransmits":1, # 指定对等体在数据包未被确认时尝试重传的最大次数。
  6. "maxPacketLifeTime":100, # 指定放弃重传未被确认的数据包之前的最大时间,以毫秒为单位。
  7. "ordered": true, # 当处于不可靠模式时,即 "maxRetransmits "或 "maxPacketLifetime "被设置,"ordered"指定是否要强制执行数据包排序,默认为true。
  8. "protocol":"my-custom-protocol", # 这个通道的自定义子协议字符串。
  9. }

注意:你必须保持对以这种方式创建的通道的引用,否则它将被关闭。


创建一个新的SDP提交,以开始与远程对等体的WebRTC连接。在调用此方法之前,至少要创建一个WebRTCDataChannel

如果这个函数返回@GlobalScope.OK,当会话准备好被发送时,session_description_created将被调用。


返回连接状态。参阅ConnectionState


重新初始化这个对等体连接,关闭任何先前活动的连接,并回到状态STATE_NEW。可以通过options的字典来配置对等连接。

有效的options是:

  1. {
  2. "iceServers": [
  3. {
  4. "urls":["stun:stun.example.com:3478"], # 一个或多个STUN服务。
  5. },
  6. {
  7. "urls":["turn:turn.example.com:3478"], # 一个或多个TURN服务。
  8. "username":"a_username", # TURN服务的可选用户名。
  9. "credential":"a_password", # TURN服务的可选密码。
  10. }
  11. ]
  12. }

经常调用这个方法以正确接收信号,例如在Node._processNode._physics_process中。


设置本地对等体的SDP描述。这应是在响应session_description_created时调用的。

调用此函数后,对等体将开始发出ice_candidate_created,除非返回与@GlobalScope.OK不同的Error


设置远程对等体的SDP描述。应用远程对等体产生的值来调用,并通过信号服务器接收。

如果typeoffer,对等体将发出session_description_created并给出适当的答案。

如果typeanswer,对等体将开始发出ice_candidate_created