使用WebRTC的Cordova点对点应用程序

4
我需要构建一个跨平台的点对点应用程序(至少支持iOS和Android)。我正在使用Cordova进行开发。目前,我可以使用ZeroConf插件进行服务发现。现在,我希望在发现后建立点对点连接。
使用Titanium已经实现了一个相当的应用程序。在发现设备之后,它使用sockets连接到被发现的设备。
/*
    Service Discovery resulting in an IP address and port number
    ...
*/

socket = Titanium.Network.createTCPSocket({
    hostName: discoveredHostName,
    port: discoveredPort,
    mode: Titanium.Network.READ_WRITE_MODE
});
...
socket.connect();

然而,我需要将应用程序翻译成Cordova版本,因此需要寻找替代Titanium版本中所使用的那些套接字的方案。不能使用中介服务器(只能用于信令,而不是消息交换)。
我的导师建议使用WebRTC,因为它是一个简单的标准Javascript API,提到它可以在iOS上工作,并指向官方网站https://webrtc.org/native-code/ios/以验证其支持iOS。我已实现了该功能,在浏览器中测试成功。
然而,当在iOS上进行测试时,WebRTC不能正常工作:
var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;

这在浏览器中可行,但在iOS上会导致RTCPeerConnectionundefined我猜我漏掉了什么,因为官方网站提到了iOS支持?
1个回答

4

WebRTC在Safari上不被支持,无论是在MacOS还是iOS上:

请参见http://caniuse.com/#search=webrtc

所引用的文章(https://webrtc.org/native-code/ios/)涉及在iOS上进行本机开发,使用库或SDK实现WebRTC API。

使用Cordova框架,您不能依赖于启用了WebView WebRTC的本机环境,但必须采用特定的插件或将Cordova WebView替换为Crosswalk(例如)。

在iOS上,实现w3c WebRTC APIs的插件是iosrtc,但它存在一些未解决的问题,以及在视频元素实现方面的某些限制。


好的,这正是我想的,谢谢!这肯定不会变得更容易...我看到了一个Cordova的WebRTC插件,我会试试它。是否存在一些可以兼容iOS和Android的WebRTC插件?顺便说一句:这意味着无法在iOS、Android和PC之间实现WebRTC的互操作性吗?(这超出了我的任务范围,但纯粹是好奇)。这就是我所说的插件:https://www.npmjs.com/package/cordova-plugin-webrtc - Kevin
也许你提到的 Cordova 插件适合你,事实上它声明支持 RTCDataChannel 并且支持 iOS 和 Android。 - beaver
他们提到“Android 4.0+即将推出”,因此我担心它还不受支持,但我会尝试一下。谢谢你的帮助! :) - Kevin
1
抱歉,我没有注意到...WebRTC目前还不是一项成熟的技术。请记住,其他标准正在开发中(http://ortc.org/)。 - beaver
1
我尝试了iosrtc,它运行得非常好,谢谢分享 :) - Kevin
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接