Как push-уведомление будет работать с лямбда-функцией Gatsby + Netlify + Netlify
Следуя инструкциям Google по push-уведомлениям, я добавил возможность push-уведомлений на свой веб-сайт PWA с поддержкой Gatsby + Netlify.
работает, но с ошибкой.
Шаг 1 Со стороны клиента он подписывается на регистрацию работника службы.
swRegistration.pushManager.subscribe({
userVisibleOnly: true
})
.then(subscription => {
console.log('User is subscribed:', subscription);
isSubscribed = true;
})
.catch(err => {
if (Notification.permission === 'denied') {
console.warn('Permission for notifications was denied');
} else {
console.error('Failed to subscribe the user: ', err);
}
});
Шаг 2, затем со стороны сервера (функция Netlify Lambda) нам нужно вставить объект регистрации, который распечатывается со стороны клиента из этой строки кода.
.then(подписка => { console.log('Пользователь подписан:', подписка); isSubscribed = true; })
чтобы он работал (серверная / лямбда-функция):
const webPush = require('web-push');
const pushSubscription = YOUR_SUBSCRIPTION_OBJECT;
// TODO 4.3a - include VAPID keys
const payload = 'Here is a payload!';
const options = {
TTL: 60,
// TODO 4.3b - add VAPID details
vapidDetails: {
subject: "mailto:my@gmail.com",
publicKey: vapidPublicKey,
privateKey: vapidPrivateKey,
},
};
webPush.sendNotification(
pushSubscription,
payload,
options
);
Вы, наверное, уже заметили проблему.
При локальной разработке я могу запустить свой сайт Gatsby PWA,
gatsby build && gatsby serve
затем он распечатывает объект регистрации со стороны клиента Gatsby PWA. Затем я могу вставить его (объект регистрации) в лямбда-функцию Netlify, а затем запустить свою функцию Netlify Lambda с помощью
netlify dev
Но при развертывании веб-сайта Garsby + Netlify PWA лямбда-функция развертывается вместе с PWA, тогда как я могу убедиться, что лямбда-функция использует регистрацию, полученную со стороны клиента, что происходит только тогда, когда пользователь попадает на веб-сайт после развертывания?