【问题标题】:IBM Worklight 5.0.6 - /init vs WL.Client.connect() callIBM Worklight 5.0.6 - /init 与 WL.Client.connect() 调用
【发布时间】:2013-11-13 15:16:35
【问题描述】:

我有一个简单的测试应用程序,我正在决定如何通过WL.Client.connect() 处理服务器连接。

在应用程序启动期间,不会发生身份验证过程。只需使用 initOptions.js (connectOnStartup:false) 进行标准初始化,然后在 wlCommonInit() 调用中调用服务器 (WL.Client.connect()) 并使用适当的成功/失败处理程序。

当我使用移动浏览器模拟器(例如:Android 环境)测试应用程序时,我从浏览器控制台获得了以下堆栈跟踪:

WL.Client.init() passed! wlgap.android.js:1538
wlclient init started wlgap.android.js:1538
before: app init onSuccess wlgap.android.js:1538
Request [/apps/services/api/UnisTestAdapters/android/init] wlgap.android.js:1538
inside wlCommonInit wlgap.android.js:1538
after: app init onSuccess wlgap.android.js:1538
wlclient init success wlgap.android.js:1538
wlclient init started wlgap.android.js:1538
before: app init onSuccess wlgap.android.js:1538
Cannot invoke WL.Client.connect while it is already executing. wlgap.android.js:1544
inside wlCommonInit wlgap.android.js:1538
Cannot invoke WL.Client.connect while it is already executing. wlgap.android.js:1544
inside wlCommonInit wlgap.android.js:1538
after: app init onSuccess wlgap.android.js:1538
wlclient init success wlgap.android.js:1538
Failed to load resource: the server responded with a status of 401 (Unauthorized) http://<myhost>/apps/services/api/UnisTestAdapters/android/init
Request [/apps/services/api/UnisTestAdapters/android/init] wlgap.android.js:1538
response [/apps/services/api/UnisTestAdapters/android/init] success: /*-secure-
{"userPrefs":{},"WL-Authentication-Success":{"wl_remoteDisableRealm":{"userId":"null","attributes":{},"isUserAuthenticated":1,"displayName":"null"},"wl_antiXSRFRealm":{"userId":"2lpeuqgs32jqt15bkbu0hg19j","attributes":{},"isUserAuthenticated":1,"displayName":"2lpeuqgs32jqt15bkbu0hg19j"},"wl_deviceNoProvisioningRealm":{"userId":"previewDummyId","attributes":{"mobileClientData":"com.worklight.core.auth.impl.MobileClientData@15c4c586"},"isUserAuthenticated":1,"displayName":"previewDummyId"},"wl_anonymousUserRealm":{"userId":"a940a5a8-7506-4052-9445-87b8aeeb23f9","attributes":{},"isUserAuthenticated":1,"displayName":"a940a5a8-7506-4052-9445-87b8aeeb23f9"}},"notificationSubscriptionState":{},"gadgetProps":{"ENVIRONMENT":"android"},"userInfo":{"wl_authenticityRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"UnisaluteAuthRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"SampleAppRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"wl_remoteDisableRealm":{"userId":"null","attributes":{},"isUserAuthenticated":1,"displayName":"null"},"wl_antiXSRFRealm":{"userId":"2lpeuqgs32jqt15bkbu0hg19j","attributes":{},"isUserAuthenticated":1,"displayName":"2lpeuqgs32jqt15bkbu0hg19j"},"WorklightConsole":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"wl_deviceAutoProvisioningRealm":{"userId":null,"attributes":{},"isUserAuthenticated":0,"displayName":null},"wl_deviceNoProvisioningRealm":{"userId":"previewDummyId","attributes":{"mobileClientData":"com.worklight.core.auth.impl.MobileClientData@15c4c586"},"isUserAuthenticated":1,"displayName":"previewDummyId"},"myserver":{"userId":"a940a5a8-7506-4052-9445-87b8aeeb23f9","attributes":{},"isUserAuthenticated":1,"displayName":"a940a5a8-7506-4052-9445-87b8aeeb23f9"},"wl_anonymousUserRealm":{"userId":"a940a5a8-7506-4052-9445-87b8aeeb23f9","attributes":{},"isUserAuthenticated":1,"displayName":"a940a5a8-7506-4052-9445-87b8aeeb23f9"}}}*/ wlgap.android.js:1538
wlclient connect success 
Request [/apps/services/api/UnisTestAdapters/android/heartbeat] wlgap.android.js:1538
response [/apps/services/api/UnisTestAdapters/android/heartbeat] success:  wlgap.android.js:1538
Request [/apps/services/api/UnisTestAdapters/android/heartbeat] wlgap.android.js:1538
response [/apps/services/api/UnisTestAdapters/android/heartbeat] success:  wlgap.android.js:1538
Request [/apps/services/api/UnisTestAdapters/android/heartbeat] wlgap.android.js:1538
response [/apps/services/api/UnisTestAdapters/android/heartbeat] success:  wlgap.android.js:1538
Request [/apps/services/api/UnisTestAdapters/android/heartbeat] wlgap.android.js:1538
response [/apps/services/api/UnisTestAdapters/android/heartbeat] success:  wlgap.android.js:1538 

结果是 wlClientInit 被调用了 3 次,直到对/apps/services/api/UnisTestAdapters/android/init 的调用得到服务器的响应。

在此期间,对WL.Client.connect() 的调用失败了两次,因为Cannot invoke WL.Client.connect while it is already executing。然后在得到 /init 调用的响应后,我也得到了wlclient connect success

鉴于这种情况,我有一些问题:

  1. /init 调用是 WL.Client.connect() 的秘密调用吗?两个服务器调用是否在响应中携带相同的信息?换句话说,/init 调用是否充当 WL.Client.connect() 以确保所有需要 connect() 调用的功能同样可用?

  2. 我是否受到调用 wlClientInit() 的“重试机制”的保证,直到 /init 调用终止,从而允许成功调用 WL.Client.connect()?有什么方法可以防止 WL.Client.connect() 调用在成功之前失败两次?

  3. 您能否确认,正如我在控制台中看到的那样,设置了默认心跳以防止会话超时?默认的心跳间隔是多少?


@Daniel Gonzales:这里是wlCommonInit() 代码和相关处理程序:

function wlCommonInit(){
    // Common initialization code goes here
    busyind = new WL.BusyIndicator("content");
    $('#SubscribeButton').bind('click', subscribeButtonClicked);
    $('#UnsubscribeButton').bind('click', unsubscribeButtonClicked);    

    WL.Client.connect({ onSuccess: connected, 
                onFailure: notconnected,
                timeout: 1000
    });

    WL.Logger.debug("inside wlCommonInit");
}

function connected(response){
    alert("connected");
}

function notconnected(response){
    alert("not connected");
}

【问题讨论】:

  • 你的 wlCommonInit 上的代码是什么?

标签: ibm-mobilefirst worklight-server worklight-runtime


【解决方案1】:

请参阅这两个问题(嗯,他们的答案)以获得一些可能有帮助的解释。

Heartbeat,是的,默认开启,有a default of 20 minutes

【讨论】:

  • Idan,我已经看过这些帖子,但他们没有解释为什么我收到两次错误“无法在 WL.Client.connect 已经执行时调用它”,就好像我发出了几个 WL。 Client.connect() 调用。但在 wlCommonInit() 中,我只调用一次 WL.Client.connect(),所以我想知道该调用是否与 /init 调用发生冲突,可能仍在进行中。如果是这种情况,我该如何避免呢?不是应该在 WL.Client.init() 初始化 WL 框架之后调用 wlCommonInit() 吗?我假设 /init 请求与 WL.Client.init() 调用有关,不是吗?谢谢。
  • Idan,我也有类似的问题。当我调用 InvokeProcedure 时,我得到以下 Failed to load resoure: The requested URL was not found on this server.
  • @Quake,如果你使用 connectOnStartup:true,那将导致额外的连接。
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
相关资源
最近更新 更多