2017-07-24 65 views
0

我试图创建一个多用户和多权限系统,使用socket.io为了使许多功能实时和流畅。Socket.IO,多个用户不同的功能

我有一切设置和功能上工作的页面加载,查询数据库和拉动相关数据基于用户,他们的权限和他们是什么组的一部分然而我将如何分配此用户的套接字,它保留了这个'用户信息',比如他们使用的id以及你在会话数据中常见的其他东西?

从我所看到的情况来看,只要页面被加载,刷新或关闭,套接字ID就会重置和更改,因此我无法将此ID存储在数据库中临时对用户查询 - 我有点卡住在最好的方式/做法去做这件事。

编辑:我应该提一下,我的应用程序已经构建完成,除了使用Express的套接字外,还有其他功能。

+0

调查FeathersJS。我相信它拥有您需要的一切内置于易于使用的后端框架。如果您不打算使用框架,则可以根据用户数据库标识在socket.io中设置通道。这可能是一个痛苦的执行,所以我建议看看FeathersJS。 –

回答

0

用户导航到的每个新页面都将关闭先前的socket.io连接并创建一个新页面,并且每个新的socket.io连接将有一个新的socket.id,这是正确的。 socket.id并不意味着用作对特定用户的持续引用。这只是对特定连接的参考。

相反,它听起来像你想要的是某种用户会话,你可以在每次有新的socket.io连接时持久地识别用户。然后,您将使用您自己的用户ID作为可应用于每个传入socket.io连接的永久ID。

这里通常的方案是使用类似express-session和/或护照的方式设置常规http会话。一旦你有了,你有一种方法来识别所有传入的http连接,他们属于哪个用户。由于每个socket.io连接都以http请求开始,这意味着您可以识别所有socket.io连接。要做到这一点,您既可以使用快速会话,也可以使用express-socket.io-session来完成大部分工作,或者您可以按照以下说明自行设置:How to share sessions with Socket.IO 1.x and Express 4.x?