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-запросы в синхронные.
Недостатки также очевидны, синхронные запросы блокируют поток. Когда по неизвестным причинам один запрос зависает где-то посередине, сценарий будет заблокирован навсегда, пока не произойдет принудительное завершение работы.
Все еще ищу лучший способ улучшить это.