如果多个用户使用同一台设备怎么办?
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。
我在网上查了下,奇怪的是没人说。
首先,API似乎不支持多个订阅上下文,它不需要参数。
但这不是什么大问题,因为如果一个用户已经授予权限,我可以获得已经存在的订阅并将其重用 it/point 给第二个用户(两者使用相同的 url) .
这里是问题开始的地方。如果一个用户登录(例如 LocalStorage 中的令牌),浏览器关闭,我发送一个通知,然后唤醒 Service Worker 并运行我的通知事件代码。
我怎么知道我是否应该显示通知?我怎么知道谁登录了?我无法访问 Service Worker 中的 LocalStorage,我不知道谁登录了。还有其他方式吗?
我们尝试了许多不同的解决方案,最后 we opted for this approach:一个端点最多关联一个用户 ID。
当您将端点发送到您的服务器进行存储时,您还会发送当前用户 ID,该 ID 将附加到您数据库中的该端点(订阅)。
当用户注销时,您从该浏览器进行 Javascript 调用,从数据库中的订阅中删除用户 ID。
当您需要定位某个用户时,您可以查询数据库以查找当前与该用户关联的设备。
您不能让多个用户同时登录您的网站,因此让多个用户同时关联到浏览器端点没有意义 .如果两个用户在不同时间共享同一个浏览器,您只需在用户注销(删除用户 ID)或登录(设置用户 ID)时更新该订阅的用户 ID。