如何在Android上使用WebRTC进行实时通信



我正在做一个简单的项目,在这个项目中,我需要通过Android手机的Gyroscope Sensor,通过互联网控制Arduino机器人(两个伺服电机)。正如你所看到的,即使手机在3D空间中的方向变化很小,3轴陀螺仪坐标也会非常敏感地变化,所以我想把滞后时间减少到毫秒。

现在除了硬件,我的第一个里程碑是通过互联网尽可能快速、连续地将陀螺仪坐标从Android发送到计算机(就像数字数据的实时流)。我知道传统的HTTP based Client-Server机制会很慢,所以我研究了以下内容:

  1. 谷歌的香奈儿API
  2. WebRTC
  3. WebSockets

根据我的研究,API频道显示的延迟从10ms到几秒钟。GAE还将请求限制为30秒。以下是Channels API压力测试:http://channelapistresstest.appspot.com/试着多次点击"发送5"按钮,你会看到延迟数上升到几秒钟。

现在,WebRTC听起来比WebSockets更有前景,速度也更快。如果有人能指导我在原生JAVA和原生Android中实际实现WebRTC,我将不胜感激(有什么好的库吗?我想从Android发送coords.并通过桌面上的JAVA-SE客户端接收)。我对混合应用程序解决方案(如Crosswalk)不感兴趣。我也想知道我应该如何设置一个信号服务器。总结起来,我有以下问题:

  1. 我应该使用哪种方法?(渠道API,WebSockets,WebRTC或其他什么)与本地Java和android支持
  2. 如果是WebRTC,我应该如何设置信号服务器?(只是简单描述)还是WebSocket的WebSocket服务器
  3. 我可以使用谷歌的云平台或类似的东西来降低我端的复杂性吗
  4. 有什么总体建议吗

提前谢谢。

您不想使用WebRTC。WebRTC要求您无论如何都要像WebSockets一样设置一个单独的信号通道,因此它对于您要做的事情来说是不必要的复杂和非常沉重的

如果您的要求只是将一系列陀螺仪值从一个设备通信到另一个设备,我建议:

  1. 从一个简单的套接字服务器开始
  2. 通过套接字将客户端连接到此服务器
  3. 将消息从一个客户端中继到另一个客户端

例如,将套接字输入打印到标准输出的简单服务器只需几行Python即可。这确实需要您学习使用套接字,因为您的客户端需要以相同的方式解释字节流。您也可以使用WebSockets,但这可能会显著增加服务器的复杂性;例如,Java EE要比Java SE复杂得多。

如果你想要数据完整性(我想你是这样做的),你应该使用TCP。

如果你真的担心延迟,你也应该跳过上网。在局域网上运行所有内容。我想你无论如何都必须看到设备处于受控状态,所以上网没有意义。

我会忽略这个项目的WebRTC。它的设置更加复杂,并且需要一个特殊的服务器
WebSocket应该适合这个项目。它和TCP一样快
如果你想不惜一切代价避免这种延迟,但数据包丢失不是问题,那么我会选择简单的UDP。对于所有这些,您不需要任何库,只需要几行代码。

相关内容

  • 没有找到相关文章

最新更新