我需要构建一个跨平台的点对点应用程序(至少支持iOS和Android)。我正在使用Cordova进行开发。目前,我可以使用ZeroConf插件进行服务发现。现在,我希望在发现后建立点对点连接。
使用Titanium已经实现了一个相当的应用程序。在发现设备之后,它使用sockets连接到被发现的设备。
然而,我需要将应用程序翻译成Cordova版本,因此需要寻找替代Titanium版本中所使用的那些套接字的方案。不能使用中介服务器(只能用于信令,而不是消息交换)。
我的导师建议使用WebRTC,因为它是一个简单的标准Javascript API,提到它可以在iOS上工作,并指向官方网站https://webrtc.org/native-code/ios/以验证其支持iOS。我已实现了该功能,在浏览器中测试成功。
然而,当在iOS上进行测试时,WebRTC不能正常工作:
这在浏览器中可行,但在iOS上会导致
使用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上会导致
RTCPeerConnection
为undefined
。我猜我漏掉了什么,因为官方网站提到了iOS支持?