我开发了一个应用程序来分析播放YouTube视频时的网络流量。它使用 chrome.webRequest ,并使用 onHeadersReceived 事件计算流量。
我想使用服务工作者来做同样的事情,以便应用程序变得与浏览器无关。我获取服务工作者的事件,但它不起作用。
我有什么建议可以继续吗?
答案 0 :(得分:3)
嗯,广泛的想法是收听获取事件,提取您需要的信息并允许请求到达网络。您在服务工作者食谱中有working demo:https://serviceworke.rs/api-analytics.html但相关代码在此处(在食谱中您也有annotated source):
self.onfetch = function(event) {
event.respondWith(
// Log the request…
log(event.request)
// …and then actually perform it.
.then(fetch)
);
};
// Post basic information of the request to a backend for historical purposes.
function log(request) {
var returnRequest = function() {
return request;
};
var data = {
method: request.method,
url: request.url
};
return fetch(LOG_ENDPOINT, {
method: 'POST',
body: JSON.stringify(data),
headers: { 'content-type': 'application/json' }
})
.then(returnRequest, returnRequest);
}