我有一个在 Apache 上构建和运行的 PHP 应用程序,使用 Nginx 作为反向代理来提供静态资源。
我还安装了 Redis,我用它来存储每个用户活动流的活动 ID。活动被写入 MySQL 数据库,然后 Redis 将活动 ID 推送到每个用户流中。当用户收到他/她的活动流时,应用程序首先从 Redis 中检索活动 ID 的用户列表,然后通过 MySQLIN()
查询获取实际活动数据。
这一切都很好,但是我想开始为这个设置添加实时功能。我希望能够将这些事件直接推送到用户浏览器,并添加一般的实时通知。
为此,我使用 socket.io 安装了 node.js。我正确启动并运行了 socket.io 服务器,并且客户端在页面加载时自动连接。
我苦苦挣扎的地方是了解如何从我的 PHP 应用程序中向 socket.io 发布消息。由于 PHP 和 node.js 不能直接通信,我的理解是我最好使用 Redis 作为中间人,因为我已经安装并启动并运行了它。但是我不知道该怎么做。
我需要的是描述从 PHP 发送通知到 Redis 然后到 socket.io 以便将其推送到相关客户端的过程(任何代码示例都会非常有帮助)。
另外,我不明白 socket.io 如何知道要发送到哪个客户端。我将如何传递这些信息并保持一切同步?这甚至有必要吗?我是否需要将我的 PHP 会话存储在 Redis 中并让 socket.io 在用户连接时收集数据?还是有其他方法?
提前致谢。
请注意:我的 PHP SESSION 数据当前保存到磁盘。