PHP实时通信:Workerman篇

文章介绍了PHP如何通过Workerman框架实现实时通信,包括WebSocket服务的创建,以及更专业的长连接框架GatewayWorker,它支持多种协议,适合构建分布式系统。此外,提到了其他PHP实时通信技术如Swoole、ReactPHP等。
摘要由CSDN通过智能技术生成

一般做Web开发,用的是HTTP协议进行通信,是一个简单的请求-响应协议。做PHP开发的都很清楚这一点。只能由浏览器发起请求,服务器响应内容。服务器不能主动向浏览器推送消息。多个浏览器之间也不能互相发送消息,顶多实现留言查询这样的效果。

那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');
};
// 运行worker
Worker::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武器库)所有,本站允许任何形式的转载/引用文章,但必须同时注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值