Web流量分析的服务工作者

时间:2016-01-08 10:50:49

标签: service-worker

我开发了一个应用程序来分析播放YouTube视频时的网络流量。它使用 chrome.webRequest ,并使用 onHeadersReceived 事件计算流量。

我想使用服务工作者来做同样的事情,以便应用程序变得与浏览器无关。我获取服务工作者的事件,但它不起作用。

我有什么建议可以继续吗?

1 个答案:

答案 0 :(得分:3)

嗯,广泛的想法是收听获取事件,提取您需要的信息并允许请求到达网络。您在服务工作者食谱中有working demohttps://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);
}