1

背景:

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

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

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

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

问题:

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

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

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

4

1 回答 1

0

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

于 2013-10-26T06:52:55.123 回答