我有一个应显示通知的应用。因此,我尝试注册服务工作者,然后尝试将端点,auth和其他密钥发送到服务器端(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”文件夹中。该文件夹位于根文件夹中的“公用”文件夹中