【问题标题】:nodejs: how to best coordinate sessions and socketsnodejs:如何最好地协调会话和套接字
【发布时间】:2013-11-05 06:13:32
【问题描述】:

背景:

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

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

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

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

问题:

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

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

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

【问题讨论】:

    标签: node.js session socket.io


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-11-08
      • 2010-09-05
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 2014-03-18
      • 2021-06-16
      相关资源
      最近更新 更多