保存推送订阅
Posted
技术标签:
【中文标题】保存推送订阅【英文标题】:Saving push subscriptions 【发布时间】:2017-07-27 16:35:32 【问题描述】:我目前正在developers.google.com 上阅读有关推送通知的信息。
我已经到了获得推送订阅对象的地步。 但我不确定保存它的最佳方法。
这是来自谷歌的代码
function subscribeUserToPush()
return getSWRegistration().then(function(registration)
const subscribeOptions =
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
;
return registration.pushManager.subscribe(subscribeOptions);
).then(function(pushSubscription)
console.log('Received PushSubscription: ', JSON.stringify(pushSubscription));
return pushSubscription;
);
我有一个数据库,有一个用户表,所以我应该在那里创建一个新列,并将字符串化的 JSON 订阅对象存储在那里吗?
或者更好地为订阅创建一个新表? 比如这样的表?
user_id |端点 | p256dh |授权
一个用户可以有多个订阅吗?在这种情况下,我认为首选专用订阅表。
关于 VAPID 密钥,我应该像上面那样将公共权限放入代码中吗?然后将私有的存储在安全的地方?
谢谢。
【问题讨论】:
【参考方案1】:如果用户通过多种设备(例如移动设备和桌面设备)使用您的网站,则他们可能有多个订阅。
关于 VAPID,是的,您的公钥可以在 javascript 客户端代码中。你的私钥应该只有你自己知道,所以应该放在服务器上安全的地方。
【讨论】:
以上是关于保存推送订阅的主要内容,如果未能解决你的问题,请参考以下文章
基于Hyperf实现RabbitMQ+WebSocket消息推送