/ / XMLHttpRequest в сервизен работник - php, json, push-уведомление, google-cloud-messaging, сервизен работник

XMLHttpRequest в рамките на сервизен работник - php, json, push-notification, google-cloud-messaging, service-worker

Опитвам се да създам система за известяваневърху хром. Имам php, който извлича данни от mysql и отразява JSON, сега бих искал да се обадя на функция getJsonCode (), която е активирана, когато пристига push известие и чете JSON данните.

В моя сервизен работник създадох функциите на стандартите.

self.addEventListener("install", function(event) {
self.skipWaiting();
console.log("Installed", event);
});
self.addEventListener("activate", function(event) {
console.log("Activated", event);
});
self.addEventListener("push", function(event) {
console.log("Push message", event);
getJsonCode();
);
})

getJsonCode() {
codeRequest= new XMLHttpRequest();
codeRequest.open("get", "myfileWithJson.php", true);
codeRequest.send();
dataJSON = codeRequest.responseText;
console.log("rispostaJSON");
}

Възможно ли е да се обади външен файл като такъв в сервизен работник или има някакви ограничения? Защото не разбирам защо не работи

Отговори:

5 за отговор № 1

Вместо XMLHttpRequest, можете да използвате новия Извличане на API. XMLHttpRequest е отхвърлен и не е наличен в обхвата на работника на услугата.

Има пример за това, което искате да постигнете тази рецепта за Готварска книга на ServiceWorker.


2 за отговор № 2

Можете да използвате fetch () вместо XHR, тъй като fetch () е нов API, който ви позволява да правите заявки, подобни на XHR, но има по-прост / приятелски API. тук, Опитайте тази:-

self.addEventListener("push", function(event) {
console.log("Push message", event);
event.waitUntil(
fetch("/myfileWithJson.php").then(function(response){
return response.json();
}).then(function(data){console.log(data);
return self.registration.showNotification(data.title, {
body: data.body,
icon: "images/icon.png",
tag: data.url

});
}));
});