4.4.1.1 构造函数
当调用RTCPeerConnection()
构造函数时,用户代理必须运行以下步骤:
如果由于此处未指定的原因而导致下面列举的任何步骤失败,则抛出UnknownError并将“message”字段设置为适当的描述。
让connection成为新创建的RTCPeerConnection对象。
如果配置中的证书集为非空,请对证书集中的每个证书运行以下步骤:
如果证书expires属性的值不在将来,则抛出InvalidAccessError。
如果证书[[Origin]]值与当前证书的[[Origin]]不同,则抛出InvalidAccessError。
存储证书。
然后,使用此 RTCPeerConnection 实例生成一个或多个新的 RTCCertificate 实例并存储它们。这可能是异步发生的,所以后续步骤的证书值可能仍未定义。如[RTCWEB-SECURITY]第4.3.2.3节所述,WebRTC使用自签名而不是公钥基础结构(PKI)证书,因此到期检查是为了确保密钥不会无限期使用,并且不需要额外的证书检查。
初始化连接的ICE代理。
让连接有[[Configuration]]内部值。设置 configuration 参数指定的配置。
让连接有一个[[IsClosed]]内部值,初始化为 false。
让连接有一个[[NegotiationNeeded]]内部值,初始化为 false。
让连接有一个[[SctpTransport]]内部值,初始化为 null。
让连接具有[[Operations]]内部值,表示操作队列,初始化为空列表。
让连接有一个[[LastOffer]]内部值,初始化为“”。
让连接有一个[[LastAnswer]]内部值,初始化为“”。
将连接的信令状态设置为“stable”。
将连接的ICE连接状态设置为“new”。
将连接的ICE收集状态设置为“new”。
将连接的连接状态设置为“new”。
让连接有一个[[PendingLocalDescription]]内部值,初始化为null。
让连接有一个[[CurrentLocalDescription]]内部值,初始化为null。
让连接有一个[[PendingRemoteDescription]]内部值,初始化为null。
让连接有一个[[CurrentRemoteDescription]]内部值,初始化为null。
返回连接。