【发布时间】:2018-01-31 09:19:50
【问题描述】:
我正在尝试开始在我的一个应用中实现Web Push。在我找到的示例中,客户端的端点 URL 通常存储在内存中,并带有如下注释:
在生产中,您可以将其存储在数据库中...
由于只有我的应用程序的注册用户可以/将收到推送通知,我的计划是将端点 URL 存储在我的数据库中的用户元数据中。到目前为止,一切顺利。
当我想允许同一个用户在多个设备上接收通知时,问题就出现了。理论上,我将为用户订阅的每台设备在数据库中添加一个新端点。但是,在测试中,我注意到端点会随着同一设备上的每个订阅/取消订阅而变化。因此,如果用户在同一设备上连续多次订阅/取消订阅,我最终会为该用户保存多个端点(除了一个之外,所有端点都是坏的)。
从what I have read 开始,当用户取消订阅或端点以其他方式无效时,没有可靠的方法来通知。那么,如何判断是否应该在添加新端点之前删除旧端点?
如何阻止用户通过重复订阅/取消订阅在我的数据库中填充端点来有效地发起拒绝服务攻击?
这更像是一个玩笑(我可以明显地限制给定用户的总端点),但我看到的问题是,当需要发送通知时,我会向通知服务发送数百个无效通知端点。
我希望我的服务器上的订阅逻辑是:
- 检查我们是否已经为此用户/设备组合保存了端点
- 如果不添加,如果是,更新它
问题是我无法弄清楚如何可靠地执行 #1。
【问题讨论】:
标签: push-notification web-push