我必须构建一个跨平台的点对点应用程序(至少支持iOS和Android)。为此,我使用Cordova。目前我可以使用ZeroConf插件进行服务发现。现在我想在发现时建立点对点连接。
使用Titanium已经制作了一个等效的应用程序。发现后,它使用套接字连接到发现的计算机。
/*
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上使用official website which metions iOS support。我实现了它,在浏览器中测试它,它就像一个魅力。
但是,在iOS上测试时,webRTC不起作用:
var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;
这适用于浏览器,但在iOS上,这会导致RTCPeerConnection
为undefined
。 我认为我遗漏了一些东西,官方网站提到iOS支持?
答案 0 :(得分:4)
Safari不支持 MacOS 和 iOS :
请参阅http://caniuse.com/#search=webrtc
引用的文章(https://webrtc.org/native-code/ios/)是指iOS上的本机开发,我认为是使用实现WebRTC API的库或SDK。
使用Cordova Framework,您无法在启用WebView WebRTC的情况下本地使用,但您必须采用特定的插件或将Cordova WebView与Crosswalk(例如)下载。
在iOS上,实现w3c WebRTC API的插件是iosrtc,但它有一些issues待定和video元素实现的一些限制。