Worklight Direct Update并脱机运行

时间:2013-04-12 09:16:45

标签: ibm-mobilefirst

我想实现这样的功能。 那是: 1)如果成功连接到worklight服务器,可以使用直接更新。 2)如果未能连接到worklight服务器,该应用程序可以脱机运行。

以下是“initOptions.js”中的配置。

// # Should application automatically attempt to connect to Worklight Server on                           application start up
// # The default value is true, we are overriding it to false here.
connectOnStartup : true,

// # The callback function to invoke in case application fails to connect to Worklight Server
onConnectionFailure: function (){
    alert("onConnectionFailure");
    doDojoReady();
},

// # Worklight server connection timeout
timeout: 10 * 1000,

// # How often heartbeat request will be sent to Worklight Server
heartBeatIntervalInSecs: 20 * 60,

// # Should application produce logs
// # Default value is true
//enableLogger: false,

// # The options of busy indicator used during application start up
busyOptions: {text: "Loading..."

但它不起作用。 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

直接更新仅在与服务器的连接可用时发生。从您提出问题的方式来看,您的问题是,当应用程序无法连接到服务器时,它无法“脱机”工作。所以你的问题与直接更新无关(如果确实如此,请适当地重新说明你的问题)。

你应该做的是read the training material for working offline in Worklight

您没有指定“不起作用”。你收到了关于onConnectionFailure的警报吗?你的doDojoReady函数怎么样?

答案 1 :(得分:0)

我也在Worklight中使用Dojo。

我的做法是将worklight配置为以在启动时连接

 var wlInitOptions = {  
     connectOnStartup : false

在我的wl init中,然后我初始化了我的dojo应用程序,

 function wlCommonInit(){
  loadDojoLayers(); 
 };

需要我正在使用的任何层,然后执行实际的dojo解析

 require([ "dojo/parser",
          "myApp/appController",
          "dojo/domReady!"
        ],
       function(parser, appController) {                
           parser.parse().then (function(){
                appController.init();
       });          
});

最后,现在WL,Dojo和myApp都已准备好我尝试WL连接,从我的appController.init()调用此方法

connectWLServer: function() {

      // possibly WL.Client.login(realm) here

       var options = {
             onSuccess: lang.hitch(this, "connectedWLServer"),
             onFailure: lang.hitch(this, "connectWLServerFailed"),
       };

       WL.Client.connect(options);
}

此时会发生任何直接更新活动。请注意,无论连接是否正常,整个应用程序都会继续运行,但显然我们可以在成功和失败的情况下运行适当的代码。根据需要何种身份验证,可能需要显式登录调用 - 基于适配器的身份验证不能自动从connect()内部进行。