Я новичок в работе с сервисными работниками и push-уведомлениями, поэтому я пробую этот тестовый проект для создания push-уведомлений с сервисными работниками и node.js.Я продолжаю получать эту ошибку DOMException в моей консоли, пытаясь зарегистрировать push.
Это мой код
const publicVapidKey =
"BA6iGR7K3KfA_xn9XZTDqKMjUZcA6o8IsnDtnkvxtmkg4GwuTCsqNU-8YUoEIkfYCpuF7PraFKVI0zvNfNsPjy0";
//check for service worker
if ("serviceWorker" in navigator && "PushManager" in window) {
console.log("Service Worker and Push is supported");
send().catch(err => console.error(err));
}
// Register the service worker
async function send() {
console.log("Registering Service Worker...");
const register = await navigator.serviceWorker.register("/worker.js", {
scope: "/"
});
console.log("Service Worker Registered...");
//Register push
console.log("Registering Push...");
const subscription = await register.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(publicVapidKey)
});
console.log("Push Registered...");
//send push notification
console.log("Sending Push... ");
await fetch("/subscribe", {
method: "POST",
body: JSON.stringify(subscription),
headers: {
"content-type": "application/json"
}
});
console.log("Push Sent...");
}
//
function urlBase64ToUint8Array(base64String) {
const padding = "=".repeat((4 - (base64String.length % 4)) % 4);
const base64 = (base64String + padding)
.replace(/\-/g, "+")
.replace(/_/g, "/");
const rawData = window.atob(base64);
const outputArray = new Uint8Array(rawData.length);
for (let i = 0; i < rawData.length; ++i) {
outputArray[i] = rawData.charCodeAt(i);
}
return outputArray;
}