4.4.1.1 构造函数

当调用RTCPeerConnection()构造函数时,用户代理必须运行以下步骤:

  1. 如果由于此处未指定的原因而导致下面列举的任何步骤失败,则抛出UnknownError并将“message”字段设置为适当的描述。

  2. 让connection成为新创建的RTCPeerConnection对象。

  3. 如果配置中的证书集为非空,请对证书集中的每个证书运行以下步骤:

    1. 如果证书expires属性的值不在将来,则抛出InvalidAccessError。

    2. 如果证书[[Origin]]值与当前证书的[[Origin]]不同,则抛出InvalidAccessError。

    3. 存储证书。

  4. 然后,使用此 RTCPeerConnection 实例生成一个或多个新的 RTCCertificate 实例并存储它们。这可能是异步发生的,所以后续步骤的证书值可能仍未定义。如[RTCWEB-SECURITY]第4.3.2.3节所述,WebRTC使用自签名而不是公钥基础结构(PKI)证书,因此到期检查是为了确保密钥不会无限期使用,并且不需要额外的证书检查。

  5. 初始化连接的ICE代理。

  6. 让连接有[[Configuration]]内部值。设置 configuration 参数指定的配置。

  7. 让连接有一个[[IsClosed]]内部值,初始化为 false。

  8. 让连接有一个[[NegotiationNeeded]]内部值,初始化为 false。

  9. 让连接有一个[[SctpTransport]]内部值,初始化为 null。

  10. 让连接具有[[Operations]]内部值,表示操作队列,初始化为空列表。

  11. 让连接有一个[[LastOffer]]内部值,初始化为“”。

  12. 让连接有一个[[LastAnswer]]内部值,初始化为“”。

  13. 将连接的信令状态设置为“stable”。

  14. 将连接的ICE连接状态设置为“new”。

  15. 将连接的ICE收集状态设置为“new”。

  16. 将连接的连接状态设置为“new”。

  17. 让连接有一个[[PendingLocalDescription]]内部值,初始化为null。

  18. 让连接有一个[[CurrentLocalDescription]]内部值,初始化为null。

  19. 让连接有一个[[PendingRemoteDescription]]内部值,初始化为null。

  20. 让连接有一个[[CurrentRemoteDescription]]内部值,初始化为null。

  21. 返回连接。