通过WebRTC发送JSON数据

时间:2014-10-14 23:21:20

标签: android java-native-interface webrtc

我是WebRTC原生框架的新手。

我能够获得WebRTC源并运行基于http://andrii.sergiienko.me/?go=all/building-webrtc-demo-for-android/ enter link description here的演示Android应用程序。

我能够在同一本地网络上的两台Android设备之间发送/接收音频和视频。

有没有办法在此对等连接中发送小型JSON有效负载?

我尝试在源代码中查找它,但我发现只支持发送视频和音频。

谢谢。

1 个答案:

答案 0 :(得分:2)

您正在寻找 WebRTC DataChannels

WebRTC的RTCDataChannel API用于将数据直接从一个对等方传输到另一个对等方。这非常适合在两个浏览器(Peers)之间发送数据,用于通信,游戏或文件传输等活动以及其他功能。

这是WebSockets的替代方案:

这是WebSockets的一个很好的替代方案,因为不涉及中央服务器,传输通常更快,没有瓶颈。当然,如果P2P数据通道通信失败,您可以通过挂钩激活基于Websockets的通信来缓解P2P传输的故障转移。

参考代码:

当您希望发送收到消息的消息(包括错误处理)时,将调用定义的事件。此代码应该在两个浏览器中运行。而不是发送“Hello World”,你只需要发送你的JSON字符串。

var peerConnection = new RTCPeerConnection();

// Establish your peer connection using your signaling channel here
var dataChannel =
  peerConnection.createDataChannel("myLabel", dataChannelOptions);

dataChannel.onerror = function (error) {
  console.log("Data Channel Error:", error);
};

dataChannel.onmessage = function (event) {
  console.log("Got Data Channel Message:", event.data);
};

dataChannel.onopen = function () {
  dataChannel.send("Hello World!");
};

dataChannel.onclose = function () {
  console.log("The Data Channel is Closed");
};

dataChannel对象是从已建立的对等连接创建的。它可以在信号发生之前或之后创建。然后传入标签以区分此通道与其他通道以及一组可选配置设置:

var dataChannelOptions = {
  ordered: false, // do not guarantee order
  maxRetransmitTime: 3000, // in milliseconds
};

有关详细信息,请查看提供的链接。

<强>示例:

官方文档链接:DataChannels in WebRTC

使用WebRTC数据通道链接到文件Trasfer示例。 File Transfer

链接到WebRTC数据通道的常用用例 Use Cases