嗨,我正在为我的大学创建一个社交网站。它基于 PHP。使用带有 connect 和 socket.io 框架的 node.js 创建 websocket 连接以检索通知并设置聊天系统。
我在一个页面上启动了一个套接字连接,我想在 Web 服务器提供的其他页面上恢复具有相同 ID 的相同连接。
并在注销时销毁套接字,就像 PHP 中的会话一样。
另一个有类似问题的主题:如何在页面之间保持 WebSockets 连接?
我目前正在使用相同的实现,并且我确实在具有用户类的服务器端代码上克服了这个问题,该用户类具有属于该用户的连接列表。第一个客户端将连接到服务器,之后该客户端将使用用户名注册自己并给出随机哈希(针对网络钓鱼的额外安全性),服务器使用此信息来确定谁是该客户端。
并且在注销时将销毁命令也发送到 websocket 服务器,以便它知道从内存中销毁该用户。
当套接字经过握手过程时,您需要保持会话。
通过恢复会话 - 您还将相关数据恢复到该会话。
不要将与用户相关的数据存储在 socket 对象中,并且 socket.id 不可靠用于识别 - 仅用于连接。
此外,您可以将会话数据存储在 redis 中,然后使用 PHP 和节点收集它,以便拥有一个会话数据存储但具有共享应用程序。