如何在socket.io中检测同一个客户端

时间:2016-07-12 22:17:26

标签: express socket.io

我正在尝试与 express.js&聊天socket.io 即可。 目前,聊天中的用户可以在同一浏览器上打开多个标签,并可以在所有这些标签上聊天。这意味着同一个客户端可以同时与少数人聊天。我想阻止这种行为。

我希望在以下情况下阻止客户端每次都进行聊天:

1)客户端在同一浏览器上的不同选项卡上工作

2)客户端打开了不同的浏览器并对其进行操作

我怎么能这样做? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用Cookie识别特定浏览器,从而在同一浏览器中的不同标签中检测同一用户。在第一次连接(socket.io或express请求)时,您设置唯一的cookie标识符,然后在后续连接上检查是否已使用该唯一cookie标识符。您必须在特定应用程序中定义“使用中”的含义。对于socket.io连接,这有点容易,因为它意味着当前已经存在活动连接。对于Express请求,这有点困难,因为请求是暂时的,因此您必须决定如何区分不同选项卡与仅导航到新页面的一个选项卡(这是特定于应用程序的方式)。

要检测多个浏览器,您必须拥有用户身份验证,并假设用户不会创建多个帐户或使用某种系统阻止同一用户创建多个帐户。然后,您可以在cookie中使用帐户身份验证凭据,就像在上一个示例中一样,来判断此用户的会话是否已被使用。