- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在接收视频流中的 block ,我通过 DataChannel 将这些 block 发送给对等方,然后由对等方在另一端重建视频。
我让这部分工作得很好,但我想添加接收到的 block #,这样即使它们碰巧以与预期不同的顺序到达也没有关系。
最初我认为添加参数 chunkId
会起作用,但是当我在接收方执行 .data.chunkId
时,它是未定义的。
然后我尝试使用 JSON.stringify({ "chunkId": chunkId, "data": chunk })
将 ArrayBuffer 与 chunkId
一起进行字符串化,但它导致当我在另一端解析它时出现问题(Unexpected end of JSON input
and Unexpected token , in JSON at position #
)
DataChannels 也接受 blob,所以我想我会尝试一下,但发件人使用的是 node.js,显然无法做到这一点。我不太清楚如何解决这个问题。
我尝试的最后一件事是简单地将 chunkId
附加到 ArrayBuffer 本身的开头/结尾但是当我尝试创建一个新数组时我得到错误 source is too large
当尝试添加 block 本身时。
实现此目标的正确方法是什么?
最佳答案
您应该能够混合发送文本和 ArrayBuffers,并在接收时检查它们:
var pc1 = new RTCPeerConnection(), pc2 = new RTCPeerConnection();
pc1.onicecandidate = e => pc2.addIceCandidate(e.candidate);
pc2.onicecandidate = e => pc1.addIceCandidate(e.candidate);
pc1.oniceconnectionstatechange = e => log(pc1.iceConnectionState);
pc1.onnegotiationneeded = e =>
pc1.createOffer().then(d => pc1.setLocalDescription(d))
.then(() => pc2.setRemoteDescription(pc1.localDescription))
.then(() => pc2.createAnswer()).then(d => pc2.setLocalDescription(d))
.then(() => pc1.setRemoteDescription(pc2.localDescription))
.catch(e => log(e));
var dc1 = pc1.createDataChannel("chat", {negotiated: true, id: 0});
var dc2 = pc2.createDataChannel("chat", {negotiated: true, id: 0});
dc2.binaryType = "arraybuffer";
dc2.onmessage = e => {
if (e.data instanceof ArrayBuffer) {
log("Got ArrayBuffer!");
} else if (e.data instanceof Blob) {
log("Got Blob!");
} else {
log("> " + e.data);
}
}
button.onclick = e => dc1.send(new ArrayBuffer(8));
chat.onkeypress = e => {
if (e.keyCode != 13) return;
dc1.send(chat.value);
chat.value = "";
};
var log = msg => div.innerHTML += "<br>" + msg;
Chat: <input id="chat"><button id="button">Send ArrayBuffer</button><br>
<div id="div"></div>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
那么为什么不在每个 ArrayBuffer 之前发送 block ID?
关于javascript - 将属性附加到通过 DataChannel 发送的 ArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629478/
我有一个 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
我是一名优秀的程序员,十分优秀!