2014-07-01 29 views
1

测试Worklight应用程序是否脱机的最佳方法是什么?在Worklight应用程序中脱机测试

我使用WL.Device.startAcquisition(...)API后,开始过的东西,我目前使用的:

WL.Device.Geo.acquirePosition(function(pos) { 
     console.log("***** Aquired position ***** " + JSON.stringify(pos)); 
}, function(error) { 
     console.log(JSON.stringify("***** Unable to aquire position ***** " + error.code + ' : ' + error.message)); 
     // call method to asynchronously - periodicallyCheckIfOnline(...); 
}, {timeout: 5000}); 

如果我确定,我下线,然后我用了watchPosition api定期测试新的连接。

navHandle = navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 5000 }); 

一旦我连接回来,我就清除手表。

navigator.geolocation.clearWatch(navHandle); 

这是做这件事的最佳方式,还是有更好的Worklight API用于此目的。

注意:我试图在移动浏览器模拟器场景中测试这个短期超时。

回答

2

在启动时,使用类似

WL.Client.connect({onSuccess:onConnectSuccess,onFailure:onConnectFailure,timeout:number_of_ms}); 

检查,如果你有初始连接。

要检测连接的任何进一步变化,您可以使用 WL.Client.setHeartBeatInterval(number_of_s) API。

这将'ping'工作灯服务器每number_of_s秒,并触发WL.Events.WORKLIGHT_IS_DISCONNECTEDWL.Events.WORKLIGHT_IS_CONNECTED事件,您将附加回调按照@Leandro David链接的有价值的教程中的描述。

注意:如果您需要使用网络传输大量数据,请进行双重检查:一旦知道您已连接到Worklight服务器,请在发送/接收数据之前使用WL.Device.getNetworkInfo API检查连接质量。

+0

这实际上是我正在寻找的,因为我希望能够有一个指示符来确定是否存在与服务器的当前连接,而不仅仅是检查我何时打电话。除了给用户提供适当的反馈之外,还有其他更美观的东西由于它不仅仅是网络连接,这对我来说是一个很好的选择。谢谢 –

2

有一个关于在线/离线模式下,工作灯处理歌厅开始材料(“脱机工作”链接)教程: http://www.ibm.com/developerworks/mobile/worklight/getting-started.html#GS_work_offline

它告诉使用工作灯API来处理在线/离线的最佳方式连接

总之,我认为这是最重要的部分:

连接的主动探测

连接丢失可以在应用程序代码中的两个位置检测到: - 应用程序初始化 - 通常从initOptions.js文件调用的WL.Client.init()方法 - 适配器过程调用 - WL.Client.invokeProcedure()方法

-To添加连接故障检测在任一位置中,添加onConnectionFailure属性和指定的回调函数被调用,如果连接失败

var wlInitOptions = { 
    onConnectionFailure: function (data){ 
    connectionFailure(data); 
}, 

WL.Client.invokeProcedure(invocationData, { 
    onSuccess: successHandlerFunction, 
    onConnectionFailure: connectionFailure, 
    timeout: 1000 

});

被动检测 - 脱机和联机事件

每次工作灯框架试图访问工作灯服务器,它可能会检测应用程序从离线切换到在线状态,反之亦然。 在这两种情况下,JavaScript事件被触发: - WL.Events.WORKLIGHT_IS_DISCONNECTED事件被触发时,连通工作灯服务器失败 - WL.Events.WORKLIGHT_IS_CONNECTED事件被触发时,连通工作灯服务器恢复

你可以将事件侦听器添加到这些事件并指定回调函数来处理它们。

document.addEventListener(WL.Events.WORKLIGHT_IS_CONNECTED, connectDetected, false); document.addEventListener(WL.Events.WORKLIGHT_IS_DISCONNECTED, disconnectDetected, false);

注意:WL.Events.WORKLIGHT_IS_DISCONNECTED和WL.Events。WORKLIGHT_IS_CONNECTED是命名空间常量,而不是字符串

有教程提供更多的细节上面