如果多个用户使用同一设备怎么办?

时间:2018-05-06 03:15:50

标签: service-worker web-push

我在网上搜索但没有人奇怪地谈论它。

首先,API似乎不支持多个订阅上下文,它不需要参数。

但这不是一个大问题,因为如果一个用户已经授予了权限,我可以获得已经存在的订阅并重新使用它/将其指向第二个用户(两者都使用相同的URL)。

这是问题的起点。如果一个用户登录(例如LocalStorage中的令牌),则关闭浏览器并发送通知,然后唤醒服务工作者并运行我的通知事件代码..

我如何知道是否应该显示通知?我怎么知道谁登录了?我无法访问Service Worker中的LocalStorage,我不知道谁登录。还有其他方式吗?

1 个答案:

答案 0 :(得分:3)

我们尝试了许多不同的解决方案,最后we opted for this approach端点最多与一个用户ID关联

当您将端点发送到服务器进行存储时,您还会发送当前用户ID,该ID将附加到数据库中的该端点(订阅)。

当用户注销时,您从该浏览器进行Javascript调用,从数据库中的订阅中删除用户ID。

当您需要定位用户时,您查询数据库以查找当前与该用户关联的设备。

您的网站上不能同时登录多个用户,因此让多个用户同时与浏览器端点关联是没有意义的。如果两个用户在不同时间共享同一个浏览器,则只需在用户注销(删除用户ID)或登录(设置用户ID)时更新该订阅的用户ID。