node.js - Node : how to best coordinate sessions and sockets

标签 node.js session socket.io

背景:

我们有一个可用的 Web 应用程序,它使用套接字 (socket.io) 将多个客户端连接到单个服务器。

服务器上有一个对象,它本质上是一个连接列表。当客户端第一次连接时,它会发送基本信息,服务器将其存储如下:

connections[socket.id] = { "name": name, "id": id, etc. };

通过套接字 ID 组织连接列表,可以轻松处理断开连接,并通知其他客户端等,这种简单的设计非常适合基本测试和轻量级使用。但是,要在封闭网络之外进行实际使用,当然有必要维护正确的用户帐户并要求用户登录并进行身份验证。

问题:

我们使用的是express(而且相当新),因此有许多使用 session /cookie 来启动 session 并根据req.session.user 限制对某些页面的访问的示例。在那里安装一些基本的东西没有问题。但目前我不清楚是否有一种好的(“标准”设计模式)方法将该 session 信息绑定(bind)到套接字中。例如,在我们的封闭世界应用程序中,用户在一个简单的警报对话框中输入他们的用户名,并在创建套接字时将其传递到服务器,这允许填充上面的连接[]条目。

但是现在,在实际加载(受限)应用程序页面之前,在登录页面上输入用户名/密码,并且我们希望使用经过 session 验证的用户名,例如,填充将为该用户创建的套接字数据(见上图)。希望这是有道理的。

我可以想象一些方法来解决这个问题,但它们充其量看起来不优雅,最坏的情况是麻烦且容易出错。看来应该有一个通用的设计模式来适应这种情况。到目前为止我在这里搜索没有成功,有人可以指教吗?

最佳答案

https://github.com/b3n0n/aenima是一种不显眼的框架,带有 auth php 端,使用 google api 和套接字运行以提供实时支持,此外,您不需要处理由于静态内容处理而导致的后续 Nodejs 错误, Node 是为了速度,您需要它轻如羽毛;)

关于node.js - Node : how to best coordinate sessions and sockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19601491/

相关文章:

javascript - uglifyjs-folder 从缩小文件中删除 console.log 和警报

node.js - Google Cloud Function 无法连接到 Redis

php - Cookie session 驱动程序不会保存任何验证错误或闪存数据

mysql - 无法设置 Angular (6) + MySQL + NodeJS + Express

node.js - 从现有的 Node_Modules 文件夹构建 Package.Json?

javascript - 响应 cookie 未在 Fetch 请求中发送

asp.net - ASP.NET 如何跟踪多个浏览器/选项卡中的 session ?

security - 如何从 url 中删除 socket.io sid 参数

php - 在 nodejs 和 php 之间共享 cookie

javascript - Socket.IO 服务器-服务器通信