为什么我必须在发送对等连接提议之前打开数据通道?

Why I have to open data channel before send peer connection offer?

我正在编写一个简单的聊天应用程序,我想将共享绘图 canvas 添加到我的应用程序中,该应用程序使用 数据通道 发送 canvas 它们之间的点。但这是一个可选规范,所以我不想每次打开聊天时都打开一个数据通道。如果我在建立对等连接后(提供后)打开数据通道,则无法通过数据通道发送任何数据。否则我可以发送(我从这里得到这一点:)。那么为什么我必须在 peer connection offer 之前打开数据通道?

SDP offer/answer 确定了您的同行想要交流的方式。该优惠包括实际连接方法(IP/port/TURN 中继) 您要使用的流媒体、编解码器和频道。答案缩小了这个 down/confirms 其他同行可以接受的范围。

如果您想向通信中添加任何内容,例如额外的媒体流 或数据通道 ,您需要通知其他对等方,否则它不会预计 anything/can 不会处理它。

流量总是:

  1. 准备好任何你想发送给你本地的远程节点的东西RTCPeerConnection
  2. 生成本地描述
  3. 将其发送到远程节点
  4. 等待远程节点的回答
  5. 合并遥控器的答案(setRemoteDescription)

只有这样,双方才能达成共识,才能真正交谈。必要时重复此过程,即每当您对要发送的内容进行实质性更改时。