问题标签 [rtcdatachannel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5757 浏览

javascript - 无法设置本地应答 sdp:在错误状态下调用:STATE_INPROGRESS

我有两个客户:

1) Windows 7 PC 上的 Chrome(版本 50.0.2661.102 m)
2) Android 平板电脑上的 Chrome(版本 50.0.2661.89)

两者都在同一个网络中(因此不需要 STUN/TURN 服务器)。

我在带有 Centos 6 的 VirtualBox VM 上使用我自己用 node.js (webSocket) 构建的信号服务器。

客户端之间的视频/声音通信工作正常。现在我想将文件从一个客户端传输到另一个客户端。作为我的代码的基础,我 在这里使用此示例的代码

正如这段代码所暗示的,我在创建 PeerConnection 之后创建了 dataChannnel。

当第二个客户提出要约时,第一个客户尝试提出答案时,我收到错误

打开相机和/或麦克风时出错:无法设置本地答案 spd:无法下推传输描述:提供了本地指纹,但没有可用的身份。

或者

打开相机和/或麦克风时出错:无法设置本地应答 spd:在错误状态下调用:STATE_INPROGRESS

只有一次创作成功。

我必须在其他地方创建 DataChannel 吗?像这儿 :

有什么建议么?

0 投票
0 回答
583 浏览

ios - 在 ios 中使用 WebRTC 进行点对点数据传输。

如何在 iOS 中使用 WebRTC 传输点对点数据(swift 或 Objective c)。它与 RTCDataChannel 类有关,但在 iOS 中没有将数据从一个对等点传输到另一个对等点的文档或示例。它将帮助我实现!

1) 点对点文件传输 2) 点对点实时原始数据传输。

0 投票
0 回答
843 浏览

ios - WebRTC:didOpenDataChannel 从未调用,RTCDataChannel 不工作

使用数据通道“似乎”非常简单......我已经有很多同行可以正确共享音频和视频(在冰候选人交换阶段之后)。

在一个同行上,我执行以下几行:

在同一对等设备上,我希望在状态更改为时收到刚刚设置的委托的通知RTCDataChannelStateOpen

相反,在另一台设备上,我希望收到通知RTCPeerConnectionDelegate,特别是方法

这一切都没有发生……在第一台设备上,dataChannel 的状态保持在 on RTCDataChannelStateConnecting。如果我尝试使用相同的标识符创建另一个数据通道,则应用程序崩溃;所以我认为它确实创建了数据通道,但由于未知原因它没有成功打开它。有人可以解释这个过程中有什么问题吗?

0 投票
0 回答
122 浏览

javascript - 如何验证通过 webrtc 传递的文件的完整性?

我创建了一个允许使用RTCPeerConnection和传输文件的页面datachannels

我需要以某种方式确保接收和传输的文件完全相同,特别是没有一个包丢失,也没有中间的坏人发送邪恶的包。

我将文件分割成块,一块一块地发送这些块,没有任何标识。当另一端出现新的 webrtc 消息时,我将其数据推送到缓冲区而无需任何检查。当传输的大小等于接收的大小时,我组装文件。

这个 while 过程如下所示:

发件人

接收者

我的问题是: 验证收到的文件是否正确的最佳方法是什么?

我试图在发送者和接收者上计算文件的 md5 校验和。由于FileApi不会产生任何我已知的计算校验和的函数,并且 javascript 的实现会md5杀死超过 15MB 文件的选项卡。这使我无法检查大文件的校验和。

0 投票
1 回答
1016 浏览

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

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

0 投票
1 回答
1685 浏览

webrtc - WebRTC 数据通道连接已建立,但未收到消息

我无法在两个对等方之间接收 WebRTC 数据通道消息。

下面是一个 MVP,其中两个对等点都是同一个页面,信号通道被普通的 JavaScript 对象交换所取代。

我不会选择使用涓流 ICE,并且我知道不使用它的缺点,我认为它不会以任何方式干扰我下面的 MVP。

代码的行为完全符合预期,并且所有的日志消息都会通过。唯一缺少的是用于数据通道消息处理的那些,就好像消息从未从任何一个对等点传到另一个对等点一样。这与尝试发送Test的事件处理程序有关。发送方法调用失败,出现我无法跟踪其根本原因的空引用错误。

我已经按照Untangling the WebRTC Flow来了解我在这个 MVP 中的位置。你可以在这里看到它,所以你不必自己运行它。

0 投票
1 回答
715 浏览

webrtc - Why are the messages sent over WebRTC received in a different order sometimes?

I use ordered set to true, however when many (1000 or more) messages are sent in a short period of time (< 1 second) the messages received are not all received in the same order.

I could provide a minimal example to reproduce this strange behavior if necessary.

I also use bufferedAmountLowThreshold and the associated event to delay when the send buffered amount is too big. I chose 2000 but I don't know what the optimal number is. The reason I have so many messages in a short period of time is because I don't want to overflow the maximum amount of data sent at once. So I split the data into 800 Bytes packs and send those. Again I don't know what the maximum size 1 message can be.

Everything works fine for small data that is not split into too many messages. The error occurs randomly for big files only.

0 投票
1 回答
150 浏览

json - WebRTC 数据通道数据包是原子的吗?

我想使用 WebRTC 数据通道在对等点之间交换 json 消息。

我可以安全地假设每条 json 消息都以原子方式远程到达(不像在 TCP 中数据包可能被拆分或分块在一起),还是我需要实现诸如长度前缀之类的东西来知道一条消息在哪里结束而另一条消息从哪里开始?

如果相关的话,使用可靠的通道和可能的 tcp 转服务器。

0 投票
1 回答
4214 浏览

google-chrome - 运行 Chrome Webrtc 日志

由于 Datachannel 失败的一些问题(onmessage 在 1 小时后停止工作 - 大约 1 GB 数据发送),我试图在 Windows 的最新 Chrome (57) 上获取 WebRTC 日志。

我正在尝试来自https://webrtc.org/web-apis/chrome/的官方指令

并带有重定向输出

但没有成功。

我得到 chrome_debug.log 但没有来自 webrtc 模块的任何信息 - 有任何类似的问题吗?有没有解决方案?

0 投票
0 回答
27 浏览

webrtc - 我应该担心家庭路由器对 RTCDataChannel 的支持吗?

RTCDataChannel 是 WebRTC 的一部分,用于通过 SCTP 进行 p2p 消息传递。

我在 stackoverflow 上看到了一些答案,人们提到越来越多的浏览器支持 https://stackoverflow.com/a/14539939/1267910

但是,我想知道在使用 WebRTC 时浏览器支持是否应该是主要关注点,因为它运行的传输协议 (SCTP) 似乎没有被许多家庭路由器很好地处理,这些路由器的更新速度不如有些浏览器是。 https://stackoverflow.com/a/7359410/1267910