Я пробовал много вещей, чтобы получить рабочее уведомление PWA Angular Express.js и с помощью сервисного работника, но ни одна из них не работает так, как я ожидал.Я хочу сделать простой сайт.если пользователь подпишется на это, он выдаст уведомление Express.js
Я новичок в этом PWA и Service Worker.
Я прилагаю свой код, который я сделал до сих пор.
reloadCache() {
if (this.swUpdate.isEnabled) {
this.swUpdate.available.subscribe(() => {
if (confirm("New version available. Load New Version?")) {
window.location.reload();
}
});
}
}
subscribeToNotification(){
if (this.swUpdate.isEnabled) {
this.swPush.requestSubscription({
serverPublicKey: this.VAPID_KEY
})
.then(sub =>{
this._ws.postSubscription(sub).subscribe();
})
}
}
postSubscription(sub: PushSubscription){
return this._http.post('http://localhost:3000/subscribe', sub)
}
в express.js =>
app.get('/', (req, res)=>{
res.send('this is push notification server use post')
});
app.post('/subscribe', (req, res)=>{
let sub = req.body;
res.set('Content-Type', 'application/json');
webpush.setVapidDetails(
"mailto:gmail.com", //why this part is used..if possible please explain it
"public-key",
"private-key"
);
let payload= JSON.stringify({
"notification":{
"title":"demo",
"body": "did it",
"icon": ""
}
});
Promise.resolve(webpush.sendNotification(sub, payload))
.then(()=> res.status(200).json({
message: "notification send"
}))
.catch(err=>{
console.error(err);
res.sendStatus(500);
})
})
app.listen(3000, ()=> {
console.log("Server Up");
});
это рабочий код.но я сгенерировал vapid, используя web-push generate-vapid-keys --json
и кнопку onclick. Я добавил триггер для получения уведомлений.Я хочу, чтобы пользователи автоматически открывали VAPID, когда они подписывались, и сохраняли его в базе данных.а затем я хочу отправить уведомление пользователям из базы данных.
не знаю, как идти дальше.пожалуйста, помогите мне с этой проблемой.