问题标签 [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 回答
927 浏览

javascript - WebRTC - DataChannel - 适合移动互联网?

我使用了这段代码这里解释了它来创建一个 webrtc 数据通道连接,而不使用任何花哨的库。Websockets 用于发送信号。

现在,当我在具有全局 IP 的服务器上运行节点应用程序时,我可以通过 websockets 连接两个浏览器实例。然后,两个浏览器都可以通过数据通道进行连接。

现在我用我的手机浏览器(最新的 chrome 浏览器)替换了一个浏览器实例并尝试了相同的方法。可悲的是,没有建立任何联系。当我通过手机使用两个 2 浏览器实例时,每个都可以正常工作。

所以,可能是信号有问题,如果两个浏览器不在同一台机器上,或者NAT 穿越不适用于移动互联网的手机,这是我怀疑的,但我不确定。

有人可以肯定地说移动互联网设备理论上能够进行 NAT 穿越吗?(我不知道,移动提供商如何设置他们的网络拓扑)

0 投票
1 回答
2421 浏览

webrtc - 我可以使用相同的 WebRTC 通道进行音频/视频和文件传输吗?

我是 WebRTC 的新手。我正在构建一个应用程序,使用户能够查看彼此的视频流以及交换文件。音频/视频部分已实现并正常工作。问题是我现在需要添加交换文件的能力。我正在使用下面的代码来初始化 PeerConnection 对象

_getConnection 创建一个新的 RTCPeerConnection 对象使用

即,没有明确的约束。它还初始化其上的不同事件处理程序。在此之后,我将音频/视频流附加到此连接。我还使用合作伙伴 ID 缓存这些连接,以便以后使用。

问题是,我以后是否可以从缓存中调用连接对象,使用类似的东西向它添加数据通道

并使用它来共享文件,还是我必须创建一个新的 RTCPeerConnection 对象并将数据通道附加到它?

0 投票
3 回答
1579 浏览

javascript - 带有 Google Channel API 的 RTCDataChannel

我正在尝试按照Dan Ristic 的这个示例进行RTCDataChannel浏览器 p2p 通信与 Google 的Channel API进行信号传输。它似乎默默地失败了-我无法触发RTCDataChannel.onopen,RTCPeerConnection.onicecandidateRTCPeerConnection.ondatachannel事件。

客户端 JS/HTML:

应用引擎 Python:

浏览器控制台:

0 投票
1 回答
325 浏览

angularjs - webrtc 数据通道代码在 FF 中不起作用,但在 Chrome 中运行良好

我使用 webrtc 数据通道制作了一个非常简单的聊天应用程序。这在 Chrome - Chrome 中运行良好,但在 FF - Chrome、Chrome - FF、FF - FF 中根本不起作用。这是我带角度的完整代码

和这个

是否应该添加更多前缀?

0 投票
1 回答
847 浏览

video - 使用数据通道 + 媒体源扩展 API 发送本地视频

我一直在玩 WebRTC peerconnections,但似乎我正在扩展 peerconnections 和 p2p 视频的可能性(至少现在是这样)

现在,我一直在研究 Media Source Extensions API,可能会创建一个替代解决方法。

上周左右一直在使用 MSE API,到目前为止能够使本地 .webm 视频文件正常工作 - 即将视频文件分块并将其显示在 html 视频元素上。

接下来,我尝试让节点服务器将视频分块并将其发送到客户端,然后客户端使用 MSE API 显示视频(MSE 应该如何使用的实际示例)

现在我想知道是否可以通过 p2p 数据通道从 html 视频元素发送本地视频,然后使用 MSE API 在接收器客户端上拼接视频。这几乎是在重新创建 WebRTC 对等连接现在已经在做的事情

只是想知道是否有人尝试过这个,因为我怀疑人们是否会正常使用这些 API。不管怎样,我很快就会尝试这个:]

0 投票
1 回答
2448 浏览

google-chrome - webrtc:无法通过 chrome 中的数据通道发送数组缓冲区

我想将流数据(作为 的序列ArrayBuffer)从 Chrome 扩展发送到 Chrome 应用程序,因为Chrome 消息 API(包括chrome.runtime.sendMessagepostMessage...)不支持ArrayBuffer并且 JS 数组的性能很差,我必须尝试其他方法。最终,我发现 WebRTCRTCDataChannel在我的情况下可能是一个很好的解决方案。

我已成功通过 a 发送字符串RTCDataChannel,但是当我尝试发送时,ArrayBuffer我得到了:

似乎这不是带宽限制问题,因为即使我发送了一个字节的数据它也失败了。这是我的代码:

在 OSX 10.10.1、Chrome M40 (Stnble)、M42(Canary) 上测试;在 Chromebook M40 上。

我在这里为 WebRTC 提交了一个错误。

0 投票
1 回答
3594 浏览

android - Android WebRTC DataChannel 二进制传输模式

我实现了使用 WebRTC 在两部 android 手机之间传输数据DataChannel

一方面,我发送数据:

另一方面,无论isBinaryFile值如何,都应调用此回调:

对于任何文件,当isBinaryFilefalse时,回调被调用,我可以打印文本,甚至重建文件(图像、pdf 等)。

isBinaryFile时,我收到以下错误:

看了这篇,好像需要用SCTP DataChannels,但是不知道怎么用!

0 投票
2 回答
494 浏览

javascript - 如何启动 WebRTC 数据通道?

我正在尝试使用 Web 套接字在客户端之间创建 WebRTC 数据通道。

我列出了一些 ICE 服务器

然后是一个连接函数,它创建一个通道并提供并通过 Web 套接字发送它。

然后在另一端有一个回调,将报价添加到其连接并发送响应。

它还为添加数据通道时设置回调,但这永远不会触发。我错过了什么?

最后,发起者上还有另一个回调,将响应描述符添加到其连接中。

除了套接字内容和数据通道内容之外的所有代码几乎一字不差地取自MDN 基本用法页面。

我正在本地主机上使用 Chrome 进行测试,所以防火墙应该不是问题。

交换发生后,两个连接都有本地和远程描述符集。数据通道readyStateconnecting。PeerConnection 的iceConnectionStateisnew和它的signalingStateis stable

少了什么东西?

0 投票
2 回答
1489 浏览

android - 在 Android 中使用 PeerConnection.createDataChannel()

我已经为 android 构建了 webrtc,并将 jar 文件包含在我的项目中。我想将数据通道附加到我的 PeerConnection 对象。在网络上,我们在 javascript 中执行以下操作:

或者

其中 pc 是 PeerConnection。

我想使用原生 webrtc 代码在 Android 上的 Java 中做同样的事情。我有一点困惑。通过查看 Eclipse 上的 Jar 文件,我可以看到 PeerConnection 的 createDataChannel 方法采用 String 和 Init 类型的两个参数。

我不明白我应该在第二个参数中添加什么。我发现 WebRTC 文档适用于 Web 应用程序。我看过下面的 WebRTC 草稿文档,但看不懂。

http://www.w3.org/TR/webrtc/#methods-2

如果有人可以提供一个如何使用它的小例子,那将会很有帮助。

目前,我正在尝试这样做:

0 投票
3 回答
8017 浏览

android - new PeerConnectionFactory() 在 android 上给出错误

我正在尝试在 Android 上实现 WebRTC DataChannel。我想创建一个简单的 peerconnection 对象,它将打开 DataChannel 以使用 WebRTC 通过网络发送数据。尝试创建 PeerConnection 对象时出现错误。我了解到我们使用 factory 来创建 peerconnection 对象factory.createPeerConnection()

为此,我必须首先创建 PeerConnectionFactory 对象。在此之后,我可以使用它来创建 PeerConnection 对象。当我尝试创建 PeerConnectionFactory 对象时Could not find method android.media.MediaCodec.setParameters出现错误。Fatal Signal 11 (SIGSEGV) at 0x00000000 (code=1)我还尝试了以下代码,PeerConnectionFactory.initializeAndroidGlobals(this, false, false, false);这就是我想要做的:

这就是我的 Peer 对象的样子:

谁能指出我在 Android 上实现 DataChannel 的任何示例源代码?如果我没有以正确的方式做这件事,也请告诉我。我找不到说明如何操作的 Android Native WebRTC 文档。我正在尝试实现我从在 Web 上使用 WebRTC 中学到的任何东西。

如果我的问题不清楚,请告诉我。