У меня есть приложение, которое должно показывать уведомление. Поэтому я попытался зарегистрировать работника службы, и после этого я попытался получить конечную точку, аутентификацию и другой ключ для отправки на сторону сервера (NodeJS). Я получаю сообщение об ошибке, что конечная точка неправильно передается на сервер.
Что плохого в коде, потому что я просто не могу понять ...
КОД
//Check for service worker
if("serviceWorker" in window.navigator){
send().catch(err => console.error(err));
}
//Register SW, Register Push, Send Push
async function send(){
//Register service worker
console.log("Registering Service Worker...");
const register = await window.navigator.serviceWorker.register("js/worker.js", {
scope: "/js/"
});
console.log("Service Worker Registered...");
//Register Push
console.log("Registering Push...");
const subscription = register.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicVapidKey)
}).then(function (pushSubscription){
const pushSub = {
endpoint: pushSubscription.endpoint,
keys:{
p256dh: pushSubscription.getKey('p256dh'),
auth: pushSubscription.getKey('auth')
}
};
});
console.log("Push Registered...");
//Send Push Notification
console.log("Sending Push...");
await window.fetch("/subscribe", {
method: "POST",
body: subscription,
headers: {
"content-type": "application/json"
}
});
console.log("Push Sent...");
Код серверной стороны
app.post("/subscribe", function(req, res){
//Get pushSubscription object
const subscription = req.body;
console.log(req.body);
//Send 201 - resource created
res.status(201);
//Create payload
const payload = {title:"Push Test"};
//Pass object into sendNotification
webpush.sendNotification(subscription, payload).catch(err => console.error(err));
});
worker.js и client.js находятся в папке 'js'. Эта папка находится в «публичной» папке, которая находится в корневой папке