Как я могу немедленно определить, что мой телефон снова подключается к сети с помощью IBM MobileFirst?

У меня возникла проблема с интервалом сердцебиения в моем приложении IBM MobileFirst.

При первом запуске приложения все ок. Если я выхожу из сети, он распознает, что я не в сети. Проблема в том, что если я выхожу из сети, а затем снова подключаюсь к сети, приложения пытаются отправить пульс и продолжают пытаться отправить его в течение примерно 20-30 секунд. Даже после того, как я был в сети с моим телефоном, я все еще «не в сети» в приложении, потому что сердцебиение все еще пытается отправить и быть отправленным успешно. Через 20-30 я получаю сообщение об успешном подключении, а затем приложение распознает, что я в сети. Есть ли способ избежать этой «задержки»?

Я хочу, чтобы приложение как можно скорее узнало, что я не в сети/не в сети. Есть ли способ добиться этого?

Это мой 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);

person Omar Alejandro Chacin Ortega    schedule 22.10.2015    source источник


Ответы (1)


Контрольный сигнал косвенно распознает, что вы находитесь в сети благодаря успешному контрольному сигналу — он не смотрит на статус онлайн/офлайн с помощью аппаратного обеспечения телефона. Поэтому всегда будет задержка, которая в среднем будет составлять половину длины сердцебиения. Если вы хотите увеличить скорость, с которой он распознает, что вы в сети, вам нужно уменьшить интервал сердцебиения. Конечно, это увеличит сетевой трафик.

Существуют плагины Cordova, такие как этот, которые вместо этого смотрят на аппаратное обеспечение телефона и определить, находится ли он в сети или в автономном режиме, предоставляя события, которые вы можете прослушать. Они (насколько я знаю) не пытаются инициировать сетевое подключение к удаленному хосту, поэтому это скажет вам только о том, считает ли телефон, что у него есть сетевое подключение, а не о том, является ли оно стабильным/надежным/быстрым. Насколько я знаю, МФУ не имеет такой встроенной функциональности. Чтобы было ясно, плагин не поддерживается IBM, и я не тестировал его.

person Andrew Ferrier    schedule 22.10.2015
comment
Я увеличил скорость своего сердцебиения до минимума, и это не помогает. По-прежнему требуется около 30 секунд, чтобы получить ответ. Я использую WL.Client.setHeartBeatInterval(1) на основе www-01.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/ - person Omar Alejandro Chacin Ortega; 22.10.2015
comment
Хм, это странно. Либо я что-то не так понял, либо что-то идет не так. Рекомендовал бы вам поднять PMR. - person Andrew Ferrier; 22.10.2015