CAF接收器,对http请求的关闭处理

时间:2018-08-10 06:35:05

标签: chromecast google-cast custom-receiver

一开始有些背景知识:) what is shutdown handling

我正在使用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推迟关机?

2 个答案:

答案 0 :(得分:1)

我做了一些研究,结果发现您也可以使用

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

代替

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

A,这无助于确保回调中的所有内容都已执行:beforeunload回调的终止方式与关机处理程序相同。

答案 1 :(得分:0)

答案似乎很简单:将所有http请求都同步。

缺点也很明显,同步请求将阻塞线程。当一个请求由于未知原因而挂在某个地方的中间时,除非强制关闭,否则脚本将永远被阻止。

仍在寻找更好的改进方法。