那PHP能不能实现实时通信呢?可以的。既能实现做事器向浏览器推送,也能实现多个浏览器之间发送,还能实现其他客户端(通过TCP协议)发送。
一样平常来讲浏览器的实时通信协议叫websocket,其他的客户端可以通过更底层的TCP或UDP实现长连接。
如果你对上面的观点有些模糊,那你最好去学习一下,这里不做展开先容。

PHP也有内置的socket函数,再加上Event等扩展,可以实现高性能的长连接常驻内存的做事。本日先容一个框架Workerman。
Workerman是一个PHP的框架,能够实现长连接等功能。也就具备了实现实时通信的能力。
利用Workerman实现一个Websocket做事的代码也很大略:
use Workerman\Worker;use Workerman\Connection\TcpConnection;require_once __DIR__ . '/vendor/autoload.php';$worker = new Worker('websocket://0.0.0.0:8484');$worker->onMessage = function(TcpConnection $connection, $data){ var_dump($data); $connection->send('receive success');};// 运行workerWorker::runAll();
只要几个大略的代码,就实现了一个websocket做事,此时可以考试测验在浏览器上发起webscoket连接。
但如果你只做长连接做事,那么推举基于Workerman的另一个长连接框架GatewayWorker。
他是Workerman官方出品的长连接框架,你可以利用一套代码实现多个协议之间的通信,比如在8080端口监听Websocket做事,在8081端口实现TCP做事,这样所有的客户端都可相互通信。
GatewayWorker的功能十分强大,继续了Workerman的各种特点,还供应了浩瀚的接口方法,利用起来非常方便。这些特性包括:
内置的守护进程命令机制支持分布式支配支持多种长连接协议以上三点实际上是做一个长连接系统的鸡肋痛点,这些功能也可以不做,做了更好,但要投入巨大的精力。而Gateway完美的健壮的实现了这些功能。
利用PHP实现实时通信还有很多技能,比如Swoole、ReactPHP、AMPHP、Swow等等,往后有机会逐一先容。
原文标题:PHP实时通信:Workerman篇
原文地址:https://phpreturn.com/index/a63edbaf477ffe.html
原文平台:PHP武器库
版权声明:本文由phpreturn.com(PHP武器库官网)原创和首发,所有权利归phpreturn(PHP武器库)所有,本站许可任何形式的转载/引用文章,但必须同时注明出处。