使用WebRTC在浏览器之间传输JSON

时间:2012-04-18 21:25:03

标签: javascript webrtc

当我最初听说WebRTC的前景时,我很兴奋。它听起来像websockets但没有服务器。不幸的是,我能找到的所有教程都强调了WebRTC的视频和音频方面。我找不到任何关于在浏览器之间发送文本/数据/ JSON的信息。你能帮我写一个简单的hello world of scorts,只是用WebbRTC从一个浏览器向另一个浏览器发送一些数据吗?

7 个答案:

答案 0 :(得分:6)

这是一个黑暗中的尝试,但最新的Web API编辑器草案有一个DataChannel界面作为Peer-to-Peer Data API的一部分。

但是,当前Working Draft没有此API,因此它可能是非常新的,但尚未实现。

答案 1 :(得分:5)

DataChannel现已在Firefox(18+)和Chrome(25+)中实现,但现在还处于早期阶段。

有关详细信息,请参阅HTML5 Rocks文章Getting Started with WebRTC

答案 2 :(得分:3)

此功能尚未在任何运送WebRTC实施中实施。正如其他海报所指出的那样,现在最新的WebRTC编辑器草案中有一个DataChannel API,但其协议仍在进行中。预计今年晚些时候会在Chrome和Firefox中看到这个API。

答案 3 :(得分:3)

这是一个老问题,但因为我开始学习webRTC,我会尝试回答它。

首先,有些误解:

  

听起来像是websockets但没有服务器

在某些信息(媒体会话管理,节点的网络配置/多媒体功能)已正确交换和协商之前,无法在WebRTC对等体之间传输任何数据。为此,您需要一台服务器signalling(这不是webRTC的一部分:您可以按照自己的方式实现它)。

完成信令后,您需要使用以下内容创建RTCPeerConnection

if (navigator.webkitGetUserMedia) {
   RTCPeerConnection = webkitRTCPeerConnection;
} else if(navigator.mozGetUserMedia){
   RTCPeerConnection = mozRTCPeerConnection;
   RTCSessionDescription = mozRTCSessionDescription;
   RTCIceCandidate = mozRTCIceCandidate;
}

然后:

var connection = new RTCPeerConnection(servers);

在此之后,您可以将数据通道添加到此PeerConnection:

var dataChannel = connection.createDataChannel("channelName",{ reliable: true });

完成此操作后,您只需拨打sendChannel.send('Any data you want');,即可发送您想要的任何数据。

如果有的话,我找到了this book really helpful。它留下了许多悬而未决的问题,但是第一次启动它很好。

答案 4 :(得分:1)

我相信Matt已经知道了,但对于谷歌来宾:是的,你可以使用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 );
   };
};

见这个例子:

答案 5 :(得分:1)

http://peerjs.com/正在不断发展并为您提供类似于websocket的语法,用于p2p浏览器实例之间的数据传输

答案 6 :(得分:0)

正如贾斯汀指出的那样,协议和API仍然被钉死;最近,IETF在JS API下提交了一份次要协议草案。最终形式可能与编辑草案中的当前提案非常接近,但您可能还需要等待接收方“打开”。

API在WebSocket api上建模,以便于将代码从WebSocket实现移动到DataChannels,但WebSocket中的所有项目都不会延续(例如url),显然DataChannel添加了许多不在WebSockets中的功能不可靠或部分可靠的数据。