使用 WebRTC 在浏览器之间传输 JSON
Transferring JSON between browsers with WebRTC
当我最初听说WebRTC的前景时,我对它的前景感到兴奋。 它听起来像websockets,但没有服务器。 不幸的是,我能找到的所有教程都强调了WebRTC的视频和音频方面。 我找不到有关在浏览器之间发送文本/数据/JSON 的任何信息。 你能帮我写一个简单的hello world吗,只是用WebbRTC将一些数据从一个浏览器发送到另一个浏览器?
在黑暗中刺痛,但最新的 Web API 编辑器草稿具有作为对等数据 API 的一部分的DataChannel
接口。
但是,当前的工作草案没有此API,因此它可能是非常新的且尚未实现。
DataChannel现在已经在Firefox(18+)和Chrome(25+)中实现,尽管它仍然处于早期阶段。
有关更多信息,请参阅 HTML5 Rocks 文章 WebRTC 入门。
此功能尚未在任何发布WebRTC实现中实现。正如其他海报所指出的,在最新的WebRTC编辑器草案中,现在有一个DataChannel API,但该协议仍在开发中。预计今年晚些时候将在Chrome和Firefox中看到此API。
这是一个古老的问题,但因为我开始学习webRTC,所以我会尝试回答它。
首先,一些误解:
听起来像websockets,但没有服务器
在某些信息(媒体会话管理,节点的网络配置/多媒体功能)正确交换和协商之前,不可能在WebRTC对等体之间传输任何数据。要做到这一点,你需要一个服务器和信令(这不是webRTC的一部分:你可以按照你想要的方式实现它)。
信令完成后,您需要创建如下所示的RTCPeerConnection:
if (navigator.webkitGetUserMedia) {
RTCPeerConnection = webkitRTCPeerConnection;
} else if(navigator.mozGetUserMedia){
RTCPeerConnection = mozRTCPeerConnection;
RTCSessionDescription = mozRTCSessionDescription;
RTCIceCandidate = mozRTCIceCandidate;
}
然后:
var connection = new RTCPeerConnection(servers);
在此之后,您可以将数据通道添加到此对等连接:
var dataChannel = connection.createDataChannel("channelName",{ reliable: true });
完成此操作后,您只需调用sendChannel.send('Any data you want');
,这将发送您想要的任何数据。
如果有的话,我发现这本书真的很有帮助。它留下了很多未解决的问题,但对于第一次开始来说,这很好。
我相信马特已经知道了,但对于谷歌客人:是的,你可以,使用DataChannels。
在您身边:
channel = somePeerConnection.createDataChannel("a Label");
channel.onopen = function() { channel.send("any thing") };
另一边:
somePeerConnection.ondatachannel = function (evt) {
evt.channel.onmessage = function (evt) {
alert( evt.data );
};
};
请参阅以下示例:
- http://www.w3.org/TR/webrtc/#examples
- https://hacks.mozilla.org/2012/11/progress-update-on-webrtc-for-firefox-on-desktop/#file-datachannels-js-LC12
http://peerjs.com/正在不断发展,并为您提供了类似 websocket 的 p2p 语法 浏览器实例之间的数据传输
正如 Justin 所指出的,协议和 API 仍在确定中;在最近的 IETF 上,我提交了 JS API 下次要协议的草案。 最终形式可能与编辑草稿中的当前提案非常接近,但您可能还需要等待接收方的"打开"。
该 API 以 WebSocket API 为模型,以简化将代码从 WebSocket 实现移动到 DataChannels,尽管并非 WebSocket 中的所有项目都会继承(例如 url),显然 DataChannel 增加了许多与不可靠或部分可靠的数据无关的 WebSocket 功能。
- Python Javascript哈希库,以确保JSON对象在传输过程中不会损坏
- 如何通过jQuery Ajax在HTML和PHP之间来回传输json字符串
- Json压缩传输
- 如何使用Javascript/jQuery将GET值从URL从PAGE1传输到JSON Web服务
- Web Workers-JSON的可传输对象
- 尽管成功传输了 json,但我的 Jquery.ajax 方法在响应中获得了错误状态
- 在从 ifram 流式传输文件或 HTTP 标头之前返回 JSON
- AngularJS:通过JS写入输入框,不要在JSON中传输值
- 使用 WebRTC 在浏览器之间传输 JSON
- 使用 RxJS Observable 流式传输 JSON
- 通过json数据结构将xlsx数据从php传输到javascript
- bigint的JSON传输:12000000000002539转换为12000000000002540
- 资源被解释为文档,但以MIME类型application/json传输
- 将JSON代码传输到外部文件时出现问题
- 如何从json数据传输读取图像
- 为JSON上的数据传输选择合适的压缩方案
- CodeIgniter -在控制器和视图之间传输JSON
- 将JSON传输到Javascript&Java与Jackson
- 以json形式从php传输数据,然后将其存储在全局对象中
- Pusher是否允许非ASCII(JSON)格式的传输负载