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

What to do if multiple users use the same device?

我在网上查了下,奇怪的是没人说。


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

但这不是什么大问题,因为如果一个用户已经授予权限,我可以获得已经存在的订阅并将其重用 it/point 给第二个用户(两者使用相同的 url) .


这里是问题开始的地方。如果一个用户登录(例如 LocalStorage 中的令牌),浏览器关闭,我发送一个通知,然后唤醒 Service Worker 并运行我的通知事件代码。

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

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

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

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

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

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