2016-01-08 1 views
2

Я разработал приложение для анализа сетевого трафика при воспроизведении видео с YouTube. Он использует chrome.webRequest, и я вычисляю трафик, используя onHeadersReceived событие.Сервисный рабочий для анализа веб-трафика

Я хочу сделать то же самое с работниками службы, чтобы приложение не зависело от браузера. Я получаю событие сервисного работника, но он не работает.

Любые предложения, как я могу продолжить?

ответ

3

Ну, широкая идея заключается в прослушивании события выборки, извлечении необходимой информации и разрешении запроса на доступ к сети. У вас есть working demo в Сервисной Worker Cookbook: 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); 
} 
+0

Благодаря Сальва, но в моем случае HTTP запрос собирается через YouTube IFRAME и событие fetch не распознает его. Я хочу отслеживать данные ответа для видео. возможно ли это через сервисного работника? –

+0

AFAIK, нет, поскольку iframe выходит за рамки Рабочего Рабочего. Возможно, продвижение по [foreign-fetch] (https://gist.github.com/mkruisselbrink/f6957bece64740926b84) в спецификации будет охватывать этот вариант использования. – Salva

 Смежные вопросы

  • Нет связанных вопросов^_^