它是 RTCPeerConnection.signalingState。可能的值是:
-
stable - 初始状态。没有正在进行的 SDP 提议/答案交换
- have-local-offer - 连接的本地端具有本地
申请了 SDP 报价
- have-remote-offer - 连接的远程端有本地
申请了 SDP 报价
- have-local-pranswer - 已应用远程 SDP 报价,并且 SDP
pranswer 在本地应用
- have-remote-pranswer - 已应用本地 SDP,并且 SDP
pranswer 远程应用
- 已关闭 - 连接已关闭
您可以在下面添加的图片中看到 WebRTC 协商过程。
DOMException: 无法设置本地答案 sdp: Called in wrong state: kStable 表示“您的浏览器”没有得到任何 SDP 提议/答案,如上图所示。这可能取决于浏览器与 scaledron WebRTC-Wrapper 实现的不兼容性,或者例如某些 STUN 问题,这些问题也涉及 Scaledron 实现。
据报道,第一次使用“新”频道 ID 时,它只能工作一次,之后就再也不能用于请求身份了。
我们假设在身份断言请求过程中存在一个用于已验证身份的“计数”(操作队列)(目标对等身份值) 非常不稳定 - 请参阅 - https://www.w3.org/TR/webrtc/#dom-rtcconfiguration-peeridentity。
function startWebRTC(isOfferer)
{
pc = new RTCPeerConnection(configuration);
var identity = pc.peerIdentity;
...
...
if (identity)
{
alert("Identity of the peer: idp='"
+ identity.idp + "'; assertion='"
+ identity.name + "'");
}
else
{
alert("Identity of the peer has not been verified");
}
...
...
}
“配置”在哪里:
const configuration = {
iceServers: [{
urls: 'stun:stun.l.google.com:19302'
}]
};
https://www.w3.org/TR/webrtc/ 4.4.1.2 入队操作:
"... 一个 RTCPeerConnection 对象有一个操作队列,[[Operations]],它确保队列中只有一个异步操作同时执行。如果在前一个调用的返回承诺仍未解决的情况下进行后续调用,它们被添加到队列中并在所有先前的调用都完成执行并且它们的承诺已经解决时执行......”......看接下来的步骤......
但是如果没有直接的分析工具来评估它是极其困难的。 WebRTC 的 scaledrone 包装器实现非常敏感。
我们必须检查 RTCPeerConnection.iceConnectionState, RTCPeerConnection.peerIdentity, RTCPeerConnection.localDescription, RTCPeerConnection.remoteDescription, RTCPeerConnection.signalingState, ... 。
我用 Firefox-Quantum-65.0 x64 和 Chrome-71.0 对 nodejs websockets 做了一些比较测试,你可以在这里看到:
您会发现其中有很大的不同。
最好的
阿克塞尔