Socket.IO 上的 PHP 应用程序 + 基于 WebSocket 的通知

标签 php apache node.js websocket socket.io

我有一个使用 laravel 用 PHP 编写的 Web 应用程序。

现在,我必须添加实时通知系统,从服务器 -> 客户端推送消息,并且可以检索从客户端 -> 服务器推送的消息。

由于 Socket.IO 向后兼容并且可以优雅地降级,我想将它用于 WebSocket/AJAX 轮询部分。

问题是 Socket.IO 默认与 Node.JS 后端一起工作。

我对服务器具有 root 访问权限,并行运行(Apache 和 Node)或添加任何额外内容都没有问题。

问题是,如何从 PHP 向 Node + Sockets.IO 发送消息?

然后,如何将消息从 Sockets.IO + Node 传输到 PHP?

我已经把 Node + Sockets to Browser 部分去掉了,因为这很简单。

我见过使用 Express.js + CURL and/or POST requests 的例子,但是,难道没有更底层的方法吗?

我知道DNode + PHP ,但我无法想象如何组装所有东西 - Apache、PHP、Node、Socket.IO、DNode,这样它就可以无缝地协同工作。

另外,我已经将这个 PHP WebSockets server 转换为 laravel 库执行。然而,这个库的问题在于它在客户端使用了干净的 WebSockets。而且,我找不到与 Socket.IO client 一起破解它的方法.

最佳答案

本教程在 using PHP and Socket.IO 上回答您问题的主要部分。

socket.io 不是您唯一的选择。看看realtime web tech guide .从外观上看,目前最好的基于 PHP 的解决方案是 Ratchet .这需要作为一个单独的进程运行,因此您仍然会遇到跨进程通信问题。

常见的跨进程通信问题是使用消息队列。当您希望在 Apache 上运行的 PHP 应用程序能够获知来自实时 Web 技术的事件时,问题就出现了。您可能必须通过网络调用来完成此操作,即使它是从实时网络技术进程到 apache 服务器的调用。

另一种选择是将实时通信卸载到托管服务,如 Pusher我为谁工作。

这个最近的问题也很相关,并且有一些有用的链接:Is native PHP support for Web Sockets available?

关于Socket.IO 上的 PHP 应用程序 + 基于 WebSocket 的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12216787/

相关文章:

php - Laravel 查询生成器 - 高级连接和选择

c++ - 使用 C++ CGI 脚本输入异常

php - .htaccess 仅在 GET 参数存在时重定向

ajax - Node 请求,cheerio - 如何处理额外的 ajax 负载

php - Bootstrap Grid 有时从新行的右侧开始

javascript - 样式更改未使用 javascript 生效

php - mysql & php - 查询具有全部或更少值但不能更多的记录

regex - .htaccess 重写 URL 启动/重定向

node.js - 无法将 API key 导出到 .zshrc(包括特殊字符)

arrays - 组织数组的算法