我想实现这样的功能。 那是: 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..."
但它不起作用。 有什么想法吗?
答案 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()内部进行。