背景:
我们有一个有效的网络应用程序,它使用套接字(socket.io)将多个客户端连接到一台服务器。
在服务器上有一个对象,它本质上是一个连接列表。当客户端首次连接时,它会发送基本信息,服务器会像以下那样存储它:
connections[socket.id] = { "name": name, "id": id, etc. };
通过套接字ID组织的连接列表允许通过其他客户端等的通知轻松断开处理,这种简单的设计非常适合基本测试和轻量级使用。但是,在封闭网络之外进行实际使用时,当然有必要维护适当的用户帐户并要求用户登录并进行身份验证。
问题:
我们正在使用express(并且相当新),因此有许多会话/ cookie用于获取会话的示例,并根据req.session.user限制对某些页面的访问。没有问题在那里得到一些基本的东西。但是在这一点上我不清楚是否有一种好的(“标准”设计模式)方法将会话信息绑定到套接字中。例如,在我们的封闭世界应用程序中,用户在一个简单的警告对话框中输入他们的用户名,并在创建套接字时立即将其传递给服务器,这允许填充上面的connections []条目。
但是现在在实际加载(受限制的)应用页面之前,在登录页面上输入了用户名/ pw,并且我们希望使用会话认证的用户名,例如,填充套接字数据(上面)将为该用户创建。希望这是有道理的。
我可以想象一些方法可以解决这个问题,但它们看起来不够优雅,最糟糕的是很麻烦且容易出错。看起来应该有一个适合这种情况的通用设计模式。到目前为止我在这里搜索没有成功,有人可以启发吗?
答案 0 :(得分:0)
https://github.com/b3n0n/aenima是一种不显眼的框架,auth php端使用google api和socket runing进行实时支持,除了你不需要处理后来因静态内容处理而导致的nodejs错误,节点是为了速度,你需要它轻如羽毛;)