允许同一用户在不同数量的设备上多次登录以及如何处理会话


Allow same user multiple login on different number of devices and how to deal with sessions?

我正在构建一个带有一些php,mysql,nodejs,socketio的聊天应用程序。

我想允许用户从无论多少数量的设备登录。比如。Facebook,你正在看哪个屏幕并不重要。它们都反映了最新的变化。现在测试了它,它以这种方式工作。如果我打开通知,该号码会消失在不同设备上的同一页面上。

我的猜测 - 并开始构建时考虑到这个 iedea - 是当用户第一次登录时为每个用户创建一个房间,并且来自同一用户的任何后续登录也会添加到该房间,以便可以轻松地将更改广播到房间。

所有浏览器都知道多次登录,因为我向房间发送了一条 soclet-message 设置了一个变量 - multilogin- 以便它知道还有更多。还需要查看用户何时单击注销按钮,它会发送该信息。如果它是唯一登录的,它应该杀死会话,将用户设置为离线。在一台设备上执行的操作,将其广播给房间中的其他成员等。

似乎合乎逻辑?

到目前为止它有效,但我不确定此设置的会话部分。

php 中的逻辑 - 继承自聊天的原始构建 - 检查用户登录以查看用户是否已登录,如果是,它首先销毁现有会话,然后发送 loggout 命令 - 我现在阻止当 multilogin 参数一起发送时 - 到另一个浏览器。

我现在的问题是,对会议采取什么合乎逻辑的方法?

我在脑子里玩弄一些想法,然后我想,让我们在互联网上看看这个主题。

一个想法可能是,只有第一个登录才能创建会话,并通过将 id 发送给其他人来共享会话,以便他们可以被识别为同一用户。

这是人们建议的方法吗?

找到了一个简单的解决方案,让每个具有相同登录用户的设备获取一个新的会话 ID,该 ID 将发送给其他人(套接字消息到房间),以便他们的会话 ID 变得相同以向服务器进行身份验证。会话 ID 已保存到足以用于此目的。