CAF Receiver, обработка выключения для запросов http

Сначала начальное чтение:) что такое обработка выключения

Я делаю собственный приемник с CAF SDK.

При аналогичной обработке завершения работы я пытаюсь отправить некоторые http-запросы в обратном вызове, например:

receiver.addEventListener(
    cast.framework.system.EventType.SHUTDOWN,
    e => {
         // some http requests
         HttpHandler.post(url, somePayload);
         HttpHandler.post(anotherUrl, someOtherPayload);
         ....... (more requests to go)
    });

Однако я не могу гарантировать, что эти запросы достигают пункта назначения, так как приложение-получатель собирается завершить работу в любое время (вероятно, менее чем через 1 секунду). Эти запросы также доказали, что фактически не достигают пункта назначения.

Насколько я знаю, нет возможности отложить завершение работы приложения-получателя с помощью самого CAF SDK.

Есть ли обходной путь? Есть ли способ отложить выключение с помощью CAF SDK?

1 ответ

Я провел еще несколько исследований, и оказалось, что вы также можете использовать

window.addEventListener("beforeunload", e => {
    ...
    });

вместо того

receiver.addEventListener(
    cast.framework.system.EventType.SHUTDOWN,
    e => { 
    ...
    });

Увы, это не помогает гарантировать, что все в обратном вызове выполняется: обратный вызов beforeunload завершается так же, как и обработчик завершения работы.

Ответ кажется довольно простым: превратить все http-запросы в синхронные.

Недостатки также очевидны, синхронные запросы блокируют поток. Когда по неизвестным причинам один запрос зависает где-то посередине, сценарий будет заблокирован навсегда, пока не произойдет принудительное завершение работы.

Все еще ищу лучший способ улучшить это.

Другие вопросы по тегам