WebRTC 带内协商与带外协商

作者:追风剑情 发布于:2024-2-28 15:35 分类:Unity3d

  建立数据通道的常用方法是在发起端调用createDataChannel()方法,在接收端监听datachannel事件,当通道建立完成后,两端都触发open事件,从而在两端都能获取数据通道的对象。

  这是WebRTC建立数据通道的默认方法,被称为带内协商。这种方法的优点是可以随时动态创建数据通道。

  WebRTC规范里还引入了另外一种建立数据通道的方法,名为带外协商。这种方法在 两端都调用 createDataChannel() 方法,任何一端都无须监听 datachannel 事件。

  • 对等方A调用 createDataChannel()方法,为可选参数 options 指定选项。negotiated 为 true 表示使用带外协商,同时指定 ID 值为 0。
    dataChannel = pc.createDatachannel(label, {negotiated: true, id: 0})
  • 通过信令服务器或其他带外传输方式将ID值传给对等方B。
  • 对等方B以同样的方式调用createDataChannel()方法,传入相同的ID值。
  • 开始SDP协商。
  • 两端都触发 open 事件。
//带外协商模式
let dataChannel = pc.createDataChannel("MyApp Channel", {
	negotiated: true
});

dataChannel.addEventListener("open", (event) => {
	beginTransmission(dataChannel);
});
requestRemoteChannel(dataChannel.id);

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号