如何将低延迟数据发送到服务器并使用phonegap返回?
考虑到我无法在本地访问php文件,并且没有使用node.js或WebSockets的经验,我不知道应该使用哪些文件。
答案 0 :(得分:11)
Android或[{3}}中的浏览器本身不支持WebSockets,这意味着如果您想在客户端上使用它们,则需要使用PhoneGap插件。
有更多信息,请访问:older versions of Cordova under iOS
但是,我不确定(即使使用插件)当设备在网络连接(WiFi - > 3G - > WiFi)之间移动时,WebSocket可能具有多大的弹性,因此使用简单的轮询Web服务可能如果您的应用需要在用户移动时继续接收数据,那么这是一个更可靠的选择。
如果您需要接收服务器发起的数据,请考虑使用推送通知:iOS(APN)和Android(C2DM)都提供API来执行此操作,这样可以比使用您的应用轮询服务器更有效地使用电池不断。
答案 1 :(得分:4)
您可以在PhoneGap中使用iOS和Android的WebSockets。 Safari中的iOS本机支持WebSockets。对于Android,您需要使用polyfill。
请参阅:https://stackoverflow.com/a/13527585/39904
上面的答案提供了有关如何在PhoneGap使用的Android WebView中提供WebSocket对象的信息,还提供了可用于开始的示例项目的链接。
WebSockets是作为'Comet'黑客的解决方案而开发的。因此,它们为客户端和服务器之间的实时双向通信提供了非常低延迟的解决方案。这意味着低带宽和低资源使用 - 移动电池 - 因为您打开一个连接而不是打开和关闭多个HTTP连接。定期发出请求的轮询解决方案可能比WebSocket解决方案更快地耗尽电池。如果您以较低的间隔轮询,则可能没问题 - 这取决于您的使用案例。
对于在网络和网络类型(WiFi - > 3G - > WiFi)之间切换时工作的WebSockets,如果您本机使用WebSockets,则需要检测onclose
并重新连接。您还需要确定最佳连接类型;不安全(WS)或安全(WSS)。我强烈建议您使用WSS for mobile,因为一些移动网络提供商使用干扰WS连接的透明代理。这可能听起来很复杂,但有很多库可以为您处理。例如Pusher JavaScript library(注意:我为Pusher工作)。当环境不允许任何WebSocket连接发生时,诸如此类的库也会提供对效率较低的基于HTTP的解决方案的回退。
另见:realtime web technology guide。
我同意@ rmc47你应该考虑本机推送通知,如果它是不经常的单一通知
答案 2 :(得分:0)
请参阅此链接以查看浏览器和设备的WebSocket支持:html5test.com site - iOS 4.2 + 已支持WebSocket
请参阅this doc,了解如何使用WebSocket开发简单的应用程序。
不幸的是,内容是用葡萄牙语(巴西语)写的,但你可以留下我将回答的评论。
答案 3 :(得分:0)