【发布时间】:2013-05-09 23:12:43
【问题描述】:
我有一个现有的 PHP 应用程序,我需要向其中添加实时通知。为了实现这一点,我安装了 node.js(打算为所有实时功能添加 socket.io)
但是。尽管过去三个小时都在研究并试图弄清楚如何将两者结合起来,但我发现自己并没有更接近理解。
我目前正在使用以下内容:
- 阿帕奇
- PHP
- Nginx(作为 Apache 的反向代理,用于所有静态内容,例如 图片/css 文件等)
- MySQL
我已经编写了从客户端向 PHP 发送事件并将通知插入数据库的代码。当收件人刷新他们的页面时,他们当然会看到通知。我只需要 node.js 来处理实时推送到客户端,但不知道如何设置它。
鉴于这种情况,我真正需要知道的是:
- 如何/何时实例化到客户端的 node.js/websocket 连接,给定 我希望所有内容仍然通过 Apache/PHP 提供吗?
- 如何从 PHP 向 Node.js 发送消息并指示它推送 通知给客户?
- 为了支持这一点,我需要对我的设置进行哪些后端修改?
最终,我希望能够简单地运行 PHP 函数并期望 node.js/socket.io/websockets 将通知推送到客户端。我只是不知道怎么去那里。
提前感谢您提供任何示例/信息/指南。
【问题讨论】:
-
1.当客户请求时; 2.Through HTTP; 3.Set up nginx.
-
你可以去this看看
-
@Supun Kavinda - 您的链接对于一般示例很有帮助。问题是它适用于每个连接到 php 文件的用户。如何将请求发送给不同的用户,而不是全部?比如说,进行不止一次的对话。我能够跟踪 php 上的用户/对话,但是如何将推送通知发送给 websocket 上正确连接的用户?在示例中,节点客户端 ID 只是整数,使它们与 $_SESSION 变量相同吗?怎么样?
-
@Zackattack 您可以使用“频道”。最简单的方法是浏览 Pusher 的 API 文档,看看他们的频道是如何工作的。你可以在你的 WS 服务器中实现类似的东西。 (这很简单,您可以通过令牌或会话进行身份验证)。然后,您可以从前端订阅频道。然而,我们不再使用 Node.js:我们用 PHP 编写了我们的 WS 服务器,这要归功于很棒的 Ratchet package。
-
谢谢你的回复,我本来打算用ratchet的,但是好像比node js复杂。我花了几个小时试图实现它并没有走得太远。我能够让 node js 在 30m 以下工作,之前没有使用 node js 的经验