我如何立即检测到我的 phone 重新与 IBM MobileFirst 联机?

How can I immediately detect my phone going back online with IBM MobileFirst?

我在 IBM MobileFirst 应用程序中遇到心跳间隔问题。

应用程序第一次运行一切正常。如果我离线,它会识别出我离线。问题是,如果我离线然后再次在线,应用程序会尝试发送心跳,并且它会持续尝试发送大约 20-30 秒。即使在与我的 phone 在线后,我仍然在应用程序中 'offline' 因为心跳仍在尝试发送并成功。 20-30 之后是我收到连接成功的消息,然后应用程序识别出我在线。有没有办法避免这种情况 'delay'?

我希望应用尽快知道我 offline/online。有办法实现吗?

这是我使用超时的 initOptions:

   var wlInitOptions = {
      timeout: 5000,
       .
       .
       .

这是我的 app.js 我正在使用 WL.Client.setHeartBeatInterval

WL.Client.setHeartBeatInterval(5);

  document.addEventListener(WL.Events.WORKLIGHT_IS_CONNECTED, function (event) {
    WL.Logger.error('We are online, lower the heartbeat');      
    WL.Client.setHeartBeatInterval(5);
  }, false);

  document.addEventListener(WL.Events.WORKLIGHT_IS_DISCONNECTED, function (event) {
    WL.Logger.error('We are no longer online, raise heartbeat');     
    WL.Client.setHeartBeatInterval(1);
  }, false);

心跳 间接 识别您在线是因为心跳成功 - 它不会使用 phone 查看 online/offline 的状态'硬件。因此,总会有延迟,平均为心跳长度的一半。如果你想提高它识别你在线的速度,你需要减少心跳间隔。当然,那会增加网络流量。

有 Cordova 插件 such as this one,它会查看 phone 的硬件并检测它是在线还是离线,提供您可以收听的事件。他们不会(据我所知)尝试启动到远程主机的网络连接,所以这只会告诉你 phone 是否认为它有网络连接,而不是 stable/robust/fast.据我所知,MFP 没有内置该功能。需要说明的是,该插件不受 IBM 支持,我还没有对其进行测试。