我正在尝试生成vapid密钥
npm install web-push -g
web-push generate-vapid-keys --json
Run Code Online (Sandbox Code Playgroud)
上述方法可用于本地开发,因为我使用web-push generate-vapid-keys --json. 我不明白的是,一旦我将 Nodejs 应用程序部署到 aws,如何生成 vapid 密钥?我之前没有在aws云端部署过任何应用程序。我有一个devops人会帮助我,但我需要指导他为我们的服务器生成无效的密钥。如果我使用在桌面上运行时获得的相同密钥,那么web-push generate-vapid-keys --json如果我关闭电脑,它们也适用于产品吗?
我实现了Web推送通知。获取错误的步骤:
我知道当服务人员收到推送但不显示通知时,可能会发生这种情况。但是我看到正常的通知,为什么我也看到其他奇怪的通知?我可以摆脱这种行为吗?
所以我终于为我的网站实现了成功的推送通知,但是当我按下通知并假设接收器的电脑关闭或处于睡眠模式时,gcm返回成功但通知丢失,它永远不会弹出该用户...而另一方面,我注意到facebook似乎正在做一些有助于它解决这个问题的事情..你看到一个facebook镀铬通知,一旦你重新开始重新启动铬的第一件事...是否有任何机构有任何想法至于fb如何通过这个问题?
我有一个网络通知脚本,工作正常.但是当我在chrome版本43中测试时,我收到错误"DOMException:注册失败 - 权限被拒绝".订阅阶段发生此错误.
这是通常的注册过程的代码片段
navigator.serviceWorker.register('sw.js').then(function(reg) {
console.log('[ServiceWorker] Registration Obj', reg);
reg.pushManager.subscribe({
userVisibleOnly: true
}).then(function(sub) {
//This never executes and catch gets called
console.log('Subscription successful, Subscription endpoint:', sub.endpoint);
}).catch(function(error) {
console.log("Error during subscription ", error);
});
}).catch(function(error) {
if (Notification.permission === 'denied') {
console.warn('Permission for Notifications was denied');
} else {
console.error('Unable to subscribe to push.', error);
}
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,错误发生在我执行的步骤中reg.pushManager.subscribe().
[注意]我认为它是铬版本43的一般问题但是当我检查像goroost.com和pushcrew这样的网站时,它们似乎工作正常.只有我的不工作
由于Chrome已切换到本机OSX通知,因此有时我尝试使用web-push和我的服务工作人员显示的通知不会显示.
它们在以前的Chrome版本中始终如一.
自从他们开始做这项工作以后,我有什么应该改变的吗?
我想知道我是否可以使用网络推送通知更新网页而不显示用户与之交互的通知.基本上我想在服务器上的事件后刷新数据.
如果可以,是否仍然需要获得用户发送这些推送更新的许可?
我按照本教程在我的 Web 应用程序中实现推送通知,当它们工作时,它们很快就会停止工作。它似乎可以很好地处理前几个通知,但之后,有时不到五分钟,订阅就会过期,根据我的后端。我从推送服务中收到错误代码 410,教程说这意味着订阅已过期。
这太疯狂了,订阅怎么会在不到五分钟的时间内到期?我搜索了我的问题,似乎没有其他人遇到过这个问题,有些人甚至说订阅可以持续数年!
我尝试在我的 service worker 中为“pushsubscriptionchange”事件实现一个事件监听器,但根据Serginho 的回答,Chrome 自 2019 年起没有实现该事件,我认为从那时起就没有改变。
哦,虽然 Chrome 可以处理订阅(但如上所述只能处理一次/两次),但 Firefox 甚至不做任何事情。我感觉我快疯了。但是,如果我使用此站点测试推送订阅功能本身,它可以在 Firefox 中运行!和铬!他们在做什么而我不是?它们显示的代码与我上面链接的教程完全相同。
我现在还能做什么?我已经考虑过可能会创建一个间隔setInterval()并每隔一秒左右重新订阅用户,但我认为这行不通。
任何帮助,将不胜感激。
firefox google-chrome push-notification service-worker web-push
我想在 django 项目中实现网络推送通知,其中前端是使用 React 实现的。我正在关注https://www.digitalocean.com/community/tutorials/how-to-send-web-push-notifications-from-django-applications这个文档,但我没有找到获取 VAPID_PUBLIC_KEY 和 VAPID_PRIVATE_KEY 的方法WEBPUSH_SETTINGS。有什么方法可以得到它?
我正在向 Mozilla 的推送服务发送推送通知:
https://updates.push.services.mozilla.com/wpush/v1/...
Run Code Online (Sandbox Code Playgroud)
这在很长一段时间内都运行得很好,但两周以来我收到了一个 413 - 对于一个(而且只有这个)消费者来说请求实体太大。
我在网上搜索了该错误消息,但我发现的只是大多数推送服务的 4KB 限制。但我发送的有效负载要小得多:
{
"Titel": "New calendar entry from subdomain.domain.com",
"Text": "A new entry has been made by firstname lastname in the calendar your-calendar-name on 2021/02/03.",
"Icon": "https:\/\/subdomain.domain.com\/version\/webapp\/icon192.png",
"URL": "https:\/\/subdomain.domain.com\/calendar\/event\/15578"
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:当我发送低于 4KB 的有效负载时,什么会导致此“请求实体太大”错误?
我有一个服务工作者从服务器获取多个通知.问题是Chrome中的所有通知都会自动关闭,但最后一个通知除外.我究竟做错了什么?
self.addEventListener('push', function(event) {
var subscriptionId;
var sessionId;
var notification = {};
event.waitUntil(
self.registration.pushManager.getSubscription().then(function(subscription) {
subscriptionId = subscription.endpoint.split('/');
subscriptionId = subscriptionId[subscriptionId.length - 1];
notification.title = 'Yay a message.';
notification.icon = '/app/img/icon-256x256.png';
notification.tag = 'notification-tag-' + (new Date)*1;
notification.messages = [];
//get context
fetch(requestUrl,
{
method: 'post',
body: body
}).then(function(response) {
response.json().then(function(data) {
sessionId = response.headers.get('SessionId');
fetch(requestUrl + '?SessionId=' + sessionId, {
method: 'post',
headers: JSON.stringify({
'Content-Type': 'application/json'
}),
body: JSON.stringify({
data: {
subscriberId: subscriptionId
}
})
}).then(function(responce) {
responce.json().then(function(data) { …Run Code Online (Sandbox Code Playgroud) web-push ×10
push-api ×4
chrome-gcm ×1
django ×1
firefox ×1
javascript ×1
mozilla ×1
node.js ×1
push ×1
reactjs ×1