繁体   English   中英

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

[英]PHP application + WebSocket based notifications over 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 和/或 POST requests 的示例,但是,没有更低级别的方法吗?

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

此外,我已将此PHP WebSockets 服务器实现转换为 Laravel 库。 但是,这个库的问题在于它在客户端使用了干净的 WebSockets。 而且,我找不到将它与Socket.IO client一起破解的方法。

本教程使用 PHP 和 Socket.IO回答了您问题的主要部分。

socket.io 不是您唯一的选择。 查看实时网络技术指南 从表面上看,目前最好的基于 PHP 的解决方案是Ratchet 这需要作为单独的进程运行,因此您仍然会遇到跨进程通信问题。

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

另一种选择是将实时通信卸载到像我工作的Pusher这样的托管服务。

最近的这个问题也很相关,并且有一些有用的链接: 是否有本机 PHP 支持 Web 套接字?

Elephant.IO通过Socket.IO支持PHP ,所以看看它!

在 node 和 apache/php 之间没有一种简单的通信方式。 因此,您要么必须在 node 中再次编写所有功能(连接到 mysql 数据库等),要么创建一个 API 以从 Node 调用并传递给套接字。

但是,您可以使用 jquery 插件,如Jquery 优雅的 websockets这个 php 类,通过 jquery 和 php 获得您自己的 websockets 功能,而不是使用 sockets.io。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM