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

2023-12-27

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

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

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

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

我拥有服务器的根访问权限,并行运行两者(Apache 和 Node)或添加任何额外内容都没有问题。

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

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

我保留了“节点+浏览器套接字”部分,因为这非常简单。

我见过利用的例子Express.js + CURL 和/或 POST 请求 https://stackoverflow.com/questions/11550103/push-notifications-using-socket-io-and-php,但是,没有更低级别的方法吗?

我知道DNode + PHP http://bergie.iki.fi/blog/dnode-make_php_and_node-js_talk_to_each_other/,但我无法想象如何组装所有东西 - Apache、PHP、Node、Socket.IO、DNode,以便它可以无缝地协同工作。

另外,我已经转变成一个 laravel 库了PHP WebSockets 服务器 https://github.com/lemmingzshadow/php-websocket执行。不过,这个库的问题在于它的客户端使用干净的 WebSocket。而且,我找不到一种方法将其与Socket.IO客户端 https://github.com/LearnBoost/socket.io-client.


本教程关于使用 PHP 和 Socket.IO http://webandphp.com/IntegratingNode.jswithPHP回答了你问题的主要部分。

socket.io 不是您唯一的选择。看看实时网络技术指南 http://www.leggetter.co.uk/real-time-web-technologies-guide。从表面上看,目前最好的基于 PHP 的解决方案是Ratchet https://github.com/cboden/Ratchet。这需要作为一个单独的进程运行,因此您仍然会遇到跨进程通信问题。

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

另一种选择是将实时通信卸载到托管服务,例如Pusher http://pusher.com我为谁工作。

最近的这个问题也很相关,并且有一些有用的链接:是否可以使用对 Web Sockets 的本机 PHP 支持? https://stackoverflow.com/questions/12203443/web-sockets-is-native-php-support-available/#12204603

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 应用程序 + 基于 Socket.IO 的 WebSocket 通知 的相关文章