- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
RTCDataChannel API 不提供任何类型的流量/控制或背压,这是否意味着发送方理论上可以使接收方的浏览器崩溃?在我看来,浏览器(Chrome、Firefox 等都在底层使用 SCTP)从 SCTP 连接读取并计划运行 js-callback 来消耗数据包。如果事件队列跟不上发送者,浏览器基本上会不断读取数据包,同时将数据包存储在缓冲区中,缓冲区会无限增长。因此,当您连接两个浏览器时,发送方实际上总是可以压倒另一个浏览器,因为没有像 TCP 接收窗口或类似的障碍。
这也适用于 websocket api。
是我遗漏了什么,还是这些 API 坏了?如果我是对的,那么在与未经身份验证的浏览器通信时(例如在 Torrent 场景中),这将是一个严重的安全问题。
最佳答案
webrtc数据通道过去是基于UDP的。在那段时间里,浏览器施加了人为的节流以防止网络泛滥。我相信在 chrome v32 之前就是这种情况。
如今,数据通道基于具有内置流量控制 (FC) 的 SCTP,并且不再有浏览器节流(感谢上帝)。控制 FC 的参数没有通过 API 公开,但这并不意味着没有 FC。
我不熟悉 webrtc 在 Chrome/FF 中的实现,但我不认为你可以通过简单的洪水攻击使浏览器崩溃。 “生产者比消费者快”是一个很老的问题。
也就是说,我一直在使用数据通道,现在已经一年多了,几乎每天都看到我的浏览器崩溃,所以 webrtc 实现中可能有很多错误。希望它们不会对安全构成任何威胁。
使用 webrtc 数据通道发送大块数据并不是一种特别愉快的体验。 API 不提供“ channel 已准备好写入”回调或任何类似的东西,所以,是的!您必须轮询 bufferedamount
值并尝试将其保持在最佳窗口内。雪上加霜的是,bufferedamount
曾经在 Windows 版本的 Chrome 下被破坏,它始终为 0。但我认为他们在 chrome v37 或大约那个时候修复了这个问题。
恕我直言,webrtc API 没有经过深思熟虑,但它完成了工作,老实说,我想不出任何经过深思熟虑的 js API。
关于javascript - WebRTC DataChannel 流量/控制/背压,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058035/
我有一个 ArrayBuffers 数组,我通过 WebRTC 从 peerA 发送到 peerB。我遇到的主要不便是:如果 peerA 将选项卡更改为另一个选项卡,那么他发送的速度非常慢。当 pee
我是第一次尝试使用 WebRTC 数据通道。我可以使用 WebRTC javascript 代码发送文本,并且可以从我的 WebRTC android 代码捕获事件。 我正在执行以下程序: From
我正在尝试使用 WebRTC 编写一个聊天应用程序,我可以使用如下代码通过 dataChannel 发送消息: const peerConnection = new RTCPeerConnection
我在 Codepen 上创建了一个演示它的工作是基于 https://codelabs.developers.google.com/codelabs/webrtc-web/#0文章。 我有两个按钮 第
我使用 WebRTC 的 DataChannel 实现了在两个 android 手机之间传输数据: 一方面,我发送数据: boolean isBinaryFile = false; File file
我用了这个code ,这是解释 here在不使用任何花哨的库的情况下创建 webrtc 数据通道连接。 Websockets 用于发信号。 现在,当我在具有全局 IP 的服务器上运行节点应用程序时,我
浏览器主要是 Nightly 和 Canary,使用 SCTP 流作为数据通道吗?至少在 http://simpl.info/rtcdatachannel/我看不到 SCTP 流并且甚至http://
我目前正在接收视频流中的 block ,我通过 DataChannel 将这些 block 发送给对等方,然后由对等方在另一端重建视频。 我让这部分工作得很好,但我想添加接收到的 block #,这样
过去几天我一直在对 WebRTC 进行大量研究 - 我已经阅读了 http://www.html5rocks.com/en/tutorials/webrtc/basics/ , 并实现了 http:/
我是WebRTC的新手。我正在尝试在两个同伴之间建立一个简单的数据通道,而没有音频或视频。只是文本数据。 最后将是一个游戏,其中2-7个对等方将连接到成为游戏主宰的对等方。 经过数小时的谷歌搜索和阅读
我一直在建立 WebRTC session 时遇到问题,我正在尝试尽可能地简化问题。所以我写了一个简单的复制和粘贴示例,您只需将报价/答案粘贴到网络表单中,然后单击提交。 HTML+JS,都在一个文件
我正在制作一个使用 WebRTC 的网络应用程序。它在桌面浏览器上工作得很好。然而,在小型智能手机网络浏览器上,会出现不需要的事件: 在移动网络浏览器 chrome for android 和 fir
我可以为一个 PeerConnection 创建多个数据 channel 吗? 您能否提供有关如何实现的示例,否则无法实现的原因? 最佳答案 是的,您可以在单个对等连接上创建多个数据 channel
由于 Android WebRTC 客户端示例中的重大更改,我正在寻找显示如何在 Android 中添加和使用 DataChannel 的代码示例。我只需要在 2 个 Android 设备之间通过 D
RTCDataChannel API 不提供任何类型的流量/控制或背压,这是否意味着发送方理论上可以使接收方的浏览器崩溃?在我看来,浏览器(Chrome、Firefox 等都在底层使用 SCTP)从
我试图了解如何使用 WebRTC dataChannels,但在测试它们时遇到了一些问题。 我克隆了https://github.com/JustGoscha/simple-datachannel但它
寻找有关 ORTC 的明确信息似乎很困难,而寻找示例则更是如此。我需要在 iframe 之间发送字符串,并正在考虑使用 WebRTC,但为了支持 Windows Edge,我一直在研究 ORTC。我想
我正在尝试使用 WebRTC 创建文件共享网站。 我的测试环境: Chrome 金丝雀 42.0.2275.0Mac 10.10 (14A389) 代码: var arrayToStoreChunks
我尝试在 iOS(10) 应用程序中使用 WebRTC 数据通道实现数据传输功能。目前尝试通过本地传输重新实现官方示例( https://github.com/webrtc/samples/blob/
我有一个 wall application使用 WebRTC 数据通道。在 the code我已经设法建立连接,但是当对等方断开连接时我没有收到通知。在 channel 上,我有以下听众: chann
我是一名优秀的程序员,十分优秀!