2015-10-22 1 views
1

Я столкнулся с проблемой интервала сердцебиения в моем приложении 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); 

ответ

1

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

Есть плагины Cordova, such as this one, которые вместо этого смотрят аппаратные средства телефона и определяют, является ли он онлайн или офлайн, обеспечивая события, которые вы можете прослушать. Они, как мне известно, не пытаются инициировать сетевое подключение к удаленному хосту, так что вы скажете только, считает ли телефон, что он имеет сетевое соединение, а не стабильно/надежно/быстро. Насколько мне известно, в MFP нет встроенной функциональности. Чтобы быть понятным, плагин не поддерживается IBM, и я его не тестировал.

+0

Я увеличил скорость своего биения как можно ниже, и это не поможет. Потребуется около 30 секунд, чтобы получить ответ. Я использую WL.Client.setHeartBeatInterval (1) на основе http://www-01.ibm.com/support/knowledgecenter/SSHS8R_7.1.0/com.ibm.worklight.apiref.doc/html /refjavascript-client/html/WL.Client.html%23setHeartBeatInterval –

+0

Хм, это странно. Либо я что-то неправильно понял, либо что-то не так. Предлагаю вам повысить PMR. –