gpt4 book ai didi

javascript - RTCPeerConnection.createDataChannel() 和 RTCPeerConnection.onDataChannel() 的区别

转载 作者:行者123 更新时间:2023-11-30 10:04:40 34 4
gpt4 key购买 nike

我最近一直在研究 webRTC,并且正在创建一个抽象层,以便通过网状网络架构轻松获得多个客户端通信。

我的问题是关于创建数据通道。目前我执行以下操作:

var pc = new RTCPeerConnection(null, {optional: []});

var conn = pc.createDataChannel("testchannel", {});
var conn2 = null;
conn.onmessage = function(evt){
console.log("onmessage1");
};

pc.ondatachannel = function (event) {
conn2 = event.channel;
event.channel.onmessage = function(evt){
console.log("onmessage2");
};
};

这导致两个客户端之间似乎打开了 2 个全双工 channel 。即调用 conn.send("message") 将导致 onmessage1 但调用 conn2.send("message") 将导致 onmessage2。这是正常行为还是我的设置有问题?

为了获得一些额外信息,我正在使用 Chrome42 和 adapter.js 进行测试

最佳答案

数据通道确实是双向的;您只需要为两个对等点创建一个数据通道即可进行通信。正如初始 RTC 连接需要*由 一个 对等方发送报价并由另一个对等方响应创建一样,数据通道需要由一个 对等方打开,而另一个可以在 ondatachannel 中锁定它。然后双方将使用该数据通道的sendon message 进行通信。

* 请注意,您可以创建“协商的”数据通道。每个数据通道都有一个id;您可以简单地手动为您的数据通道分配一个 id。如果双方都打开一个具有相同 id 的数据通道,则他们不需要“协商”它并且可以简单地假设另一端正在收听相同的 channel 。但在实践中,我发现这是片状的。

关于javascript - RTCPeerConnection.createDataChannel() 和 RTCPeerConnection.onDataChannel() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29790784/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com