如何解决 端口状态timewait解决ForSyncReply 超时与流星/科尔多瓦 iOS 应用程序

流星+PhoneGap/科尔多瓦(综合报道&-&2013秋季)
关于流星和PhoneGap/科尔多瓦
流星是一种快速的服务器/客户端开发框架,写在JS
-让人很交互式应用程序易于构建。
PhoneGap的/科尔多瓦是一个项目,允许开发人员使用HTML,CSS和JS来构建所有主要设备的移动应用程序。
整合流星+的PhoneGap /科尔多瓦的基础知识
这里的基本思想是利用PhoneGap的/科尔多瓦一次在几个不同的平台创建一个移动应用程序,它提供了设备硬件的访问,你希望你的应用程序做,然后“负载”你的流星应用程序,它处理所有一切的其余部分。
为什么这样做呢?
流星已经有很多你想要的东西的任何应用程序,包括客户端/服务器共享的逻辑,客户端优化和缓存,以及一个惊人的客户端/服务器数据同步/传输系统。它速度快,便于工作的,和有据可查的。如果你忽略了移动方面,这是一个奇妙的平台-如果我们可以得到它与移动设备一起工作,那么它是一个没有脑子的胜利。
PhoneGap的/科尔多瓦是一个方便的“空壳”这个,让您获取设备的硬件钩/输出的JS,并加载了任何的HTML,CSS,JS你喜欢。Web开发人员喜欢它,甚至是人谁可以与原生的Android或iOS(ETC)的应用程序可以工作喜欢它,因为它是跨平台的,业务逻辑只写一次。(另外,这是现在很多更有条理和稳定的3倍发行后)
流星+ PhoneGap的=赢!
两者的优点是容易结合。这是你的Web应用程序,而现在它也是你的移动应用程序。
万一你没听到,你的整个应用程序在网络和设备如出一辙上是可用的,你只有一次建立它。你只需要拍一些敏感的CSS和有逻辑在您的应用程序,用于确定您在PhoneGap的或不(稍后详述)。
“延迟加载”
这种方法启动的PhoneGap
/科尔多瓦列在网址的流星应用。这没有任何意义上的PhoneGap的www文件夹被加载,一切都通过流星加载。之后,在页面加载,它会尝试加载正确的的PhoneGap
/科尔多瓦JS文件(同样,从流星,出了公用文件夹的),然后运行特定的设备逻辑。
快 - 快最初加载和内部变化也快
没有中间层的PhoneGap,没有交流
简单的方式来获得流星应用程序进入App Store和货币化
基于这种方法的应用程序已经得到批准的iTunes和谷歌播放
复杂的,因为有很多不同的科尔多瓦的JS文件,你可能需要支持,为不同浏览器和不同的版本。
PhoneGap的插件JS更复杂(同样,具有内部流星进行管理,但版本保持与PhoneGap的同步)
“劫持DOM”
这种方法是在某处其他2间。在PhoneGap的/科尔多瓦文件所在的设备在PhoneGap的www文件夹上。该应用程序启动与当地index.html文件,但随后JS“劫持”了DOM,它确实一个AJAX请求到您的流星应用程序,并重新写入文件与你的流星文档,触发所有以启动所需的流星事件。
这使流星访问所有的PhoneGap
JS(已加载),但PhoneGap的JS是捆绑在一起,每个设备/版本内的PhoneGap。它还会将所有的PhoneGap的JS到一起来看流星JS的全局范围内。
管理简单,因为所有的设备特定的代码中的PhoneGap(每个版本捆绑)
蛮快的,基本水平AJAX请求是相当快
范围是很容易的,因为PhoneGap的可供直接流星
应用JS可以测试独立流星(只是不加载它)
范围的碰撞是可能的,要小心
我们经历了一些并发症与App硬件​​插件,可能是由于范围?
“推(iFrame中)”
这种方法可能是最隔离。它使用JS来使一个iframe中的PhoneGap
/科尔多瓦“页”的内部情况,并创建一个“队列”交换JS从流星到PhoneGap的和背部。流星和PhoneGap的只能互相交谈,通过这种交换,不直接。
管理简单,因为所有的设备特定的代码中的PhoneGap(每个版本捆绑)
快速排序的,,基本水平的iframe是相当快的,但在iframe的滚动可以滞后
范围是孤立的,没有冲突
应用JS可以测试独立流星(只是不加载它)
插件基本上保证工作,因为他们是100%隔离
复杂的使用Appcache的
范围是比较复杂和缓慢的,你必须学习和使用的交流方式
这是一个iFrame ...
因为它是一个iFrame,滚动可以滞后/闪烁在某些设备上
平滑粗糙的边缘
对于任何一个选项,你需要知道:
我在加载到设备通过PhoneGap的?
在设备装?(通常它已经是流星之前加载)
哪些硬件钩可供选择?
从PhoneGap的
是流星连接(状态)?
我们是否需要一个“回退”的URL,如果流星不在线
一些内置于所有的选项,但有一个很大的空间留给“是很简单的。”
也有一些需要简化和标准化一些需要在PhoneGap的一侧的JS(为“劫持”和“IFRAME”的方法)来加载流星应用程序和故障转移,如果它无法使用。
随意作出贡献,如果你完成任何这些,或者如果您想帮忙的文档(github上叉及拉要求)。
这些都是新的方法和库。届时将有来自流星核心移动一段时间更多的支持,但可能需要一段时间。在此之前,这些都是制作与流星和PhoneGap的一个很好的移动应用程序伟大的选择。
艾伦最喜欢=“内置页框”,因为隔离是好的PhoneGap的插件
我个人讨厌内置页框与激情,但有使用后(并促成)所有三个选项,我个人使用“IFRAME”的方法了。这是因为我曾与PhoneGap的插件与其他方法的麻烦。
没有插件?=“劫持”,因为它的快速和简单的
如果你不打算使用的插件,但可以使用PhoneGap的核心API,那么我推荐了“劫持”的方法。它是快速,简单,并且你没有在中间的尴尬iframe的交流。
最后,如​​果你不使用从PhoneGap的任何东西,它只是一个shell
/浏览器为您的流星应用程序,你可能更喜欢“懒加载” - 它是死的简单。要知道,虽然,科尔多瓦版本的一长串您的应用程序最终将不得不支持使这个选项我最不喜欢长期的。
http://docs.meteor.com/
资源综述 - http://goo.gl/cVlbB
视频 - http://www.eventedmind.com/
书 - http://www.discovermeteor.com/
很好的概述/案例分析-
一般的PhoneGap指南
在流星+ PhoneGap的
的延迟加载示例:&https://github.com/zeroasterisk/Presenteract-PhoneGap-ios
流星套餐:
(延迟加载)
(劫持DOM)
(内置页框)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。如何解决 waitForSyncReply 超时与流星/科尔多瓦 iOS 应用程序?
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
我们有流星/科尔多瓦应用程序开发工作很好,除了当部署到实际的 iPhone 设备。更多的经常不应用程序冻结后几个动作,导致在 XCode 中的以下日志︰
13:12:43.546614 museumexplorer[738:169260] #WK: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 35
13:12:44.554481 museumexplorer[738:169260] #WK: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 36
13:12:45.559667 museumexplorer[738:169260] #WK: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 37
13:13:06.239664 museumexplorer[738:169260] #WK: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 38
13:13:07.248334 museumexplorer[738:169260] #WK: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 39
13:13:08.260760 museumexplorer[738:169260] #WK: Connection::waitForSyncReply: Timed-out while waiting for reply, id = 40
我发现它跟信标功能。如果我注释掉下面的代码,不发生冻结。
cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconRegion)
.fail(console.error)
我会继续调查。但是,如果任何人有任何明亮的想法,我很乐意听到它 !
问候克里斯
解决方法 1:
显然不等 98 信标简直太多了,至少与一个科尔多瓦的应用程序中的 JavaScript 回调的开销。问题是,startRangingBeaconsInRegion 被称为每个指路明灯。我们改变了它呼吁每个 UUID (其中有的是只有 2)。对整个应用程序现在感觉更加流畅和响应 !
所以我们将以下内容︰
var beaconRegion = new cordova.plugins.locationManager.BeaconRegion(beacon._id,
beacon.uuid,
beacon.major,
beacon.minor);
cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconRegion)
.fail(console.error)
var beaconRegion = new cordova.plugins.locationManager.BeaconRegion('museumexplorerbeacon_' + uuid,
cordova.plugins.locationManager.startRangingBeaconsInRegion(beaconRegion)
.fail(console.error)

我要回帖

更多关于 process.waitfor 超时 的文章

 

随机推荐