RTCDataChannels 的 ID 是全局的还是特定于 RTCPeerConnection 的?

Is the ID of a RTCDataChannels global or specific to a RTCPeerConnection?

RTCDataChannels 的 ID 是全局的还是特定于 RTCPeerConnection 的?

例如,如果我有 p1 和 p2 这两个对等连接,我能否在每个具有 id 7 的连接上创建一个数据通道,或者它们会发生冲突吗?

我已经在 Chrome 上用 webrtc shim 试过了,看来 id 是特定于 RTCPeerConnection 的。但是,我找不到规范中指定的位置...

有人知道吗?

id来自连接的传输层。它是一个介于 0 和 65534 之间的数字,并且仅对该连接(一对 RTCPeerConnections 通信)是唯一的。

参见 https://www.ietf.org/id/draft-ietf-rtcweb-data-protocol-09.txt

第 3 节中的 "Stream Identifier"

但是有一个解决方法。您可以使用 createDataChannel:

指定您自己的 ID
let channel = createDataChannel("foo", { id: 3 });

所以您可以使用 localStorage 使它们在您的应用程序中保持唯一性(当然在一定程度上),如果您需要的话。

换句话说,您不必担心 RTCPeerConnections 之间的冲突,除非它们是同一连接的两端。