如何使用phonegap将低延迟数据发送到服务器并返回?
考虑到我不能在本地访问php文件,也没有使用node.js或WebSockets的经验,我不知道我应该使用哪种。
发布于 2013-01-23 23:58:51
Android或older versions of Cordova under iOS的浏览器本身并不支持WebSockets,这意味着如果你想在客户端使用它们,你需要使用一个PhoneGap插件。
欲了解更多信息,请访问:http://remysharp.com/2010/10/04/websockets-in-phonegap-projects/
然而,我不确定(即使使用插件)当设备在网络连接之间移动(WiFi -> 3G -> WiFi)时,WebSockets的弹性可能有多大,所以如果您的应用程序需要在用户移动时继续接收数据,使用简单的轮询web服务可能是一个更可靠的选择。
如果你需要接收服务器发起的数据,考虑使用推送通知: iOS和安卓(C2DM)都提供了API来实现这一点,这比让你的应用程序不断轮询你的服务器更有效地利用电池。
发布于 2013-01-25 19:53:12
你可以在PhoneGap的iOS和安卓系统中使用WebSockets。在Safari中,iOS本身就支持WebSockets。对于Android,您将需要使用polyfill。
请参阅:https://stackoverflow.com/a/13527585/39904
上面的答案提供了关于如何在PhoneGap使用的Android WebView中使用WebSocket对象的信息,还提供了一个示例项目的链接,您可以使用它来开始使用。
WebSockets是作为“彗星”黑客的解决方案而开发的。因此,它们为客户端和服务器之间的实时双向通信提供了非常低的延迟解决方案。这意味着低带宽和低资源使用率--移动设备上的电池--因为你只打开一个连接,而不是打开和关闭多个HTTP连接。定期发出请求的轮询解决方案可能会比WebSocket解决方案更快地耗尽电池。如果您以较低的时间间隔进行轮询,那么这可能会很好-这取决于您的用例。
就WebSockets而言,当您在网络和网络类型(WiFi -> 3G -> WiFi)之间切换时,如果您在本地使用WebSockets,则需要检测onclose并重新连接。您还需要确定最佳连接类型:不安全(WS)或安全(WSS)。我强烈建议您使用移动WSS,因为一些移动网络提供商使用的透明代理会干扰WS连接。这听起来可能很复杂,但有许多库可以为您处理这一问题。比如Pusher JavaScript library (注意:我为Pusher工作)。当环境不允许任何WebSocket连接发生时,这样的库还提供了到效率较低的基于HTTP的解决方案的后备。
另请参阅:realtime web technology guide。
我同意@rmc47的观点,如果是针对不频繁的单次通知,您应该考虑原生推送通知
发布于 2013-01-24 00:33:01
请参阅此链接以查看浏览器和设备对WebSocket的支持:html5test.com site - iOS 4.2+已支持WebSocket
请参阅解释如何使用WebSocket开发简单应用程序的this doc。
不幸的是,内容是葡萄牙语(巴西),但您可以留下评论,我会回答。
https://stackoverflow.com/questions/14482954
复制相似问题