Workman(php)实时推送示例(thinkphp)与问题排查

文章介绍了Workerman这款开源PHP应用容器在物联网和实时通讯中的应用,包括物联网设备数据实时展示、报警消息推送,以及GatewayWorker框架在服务端的部署和代码实现,同时提到了HTTPS环境下WebSocket连接的问题解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

workman

workerman是一款开源高性能PHP应用容器,它大大突破了传统PHP应用范围,被广泛的用于互联网、即时通讯、APP开发、硬件通讯、智能家居、物联网等领域的开发。

业务场景

目前接触到的场景大致分为两类:

  • 物联网方面;设备传感器传送回来的报警数据是实时展示给总控制台(如下图的多个报警数据统计图部分)
  • 实时消息推送;比如有系统有新的客户注册需要实时推送给相关业务员知晓等

代码实现

本质上其实就是服务端与客户端受代码逻辑控制下的数据交互。

GatewayWorker(服务端)

GatewayWorker基于Workerman开发的一个项目框架。因为绝大多数开发者的目标是基于Workerman开发TCP长连接应用,而长连接应用服务端有很多共同之处,例如它们有相同的进程模型以及单发、群发、广播等接口需求。所以才有了GatewayWorker框架,GatewayWorker是基于Workerman开发的一个TCP长连接框架,实现了单发、群送、广播等长连接必用的接口。

服务端部署(Linux)

在GatewayWorker官网下载对应的代码示例,在TP框架代码根目录下创建了一个workman的文件夹然后后将官方示例代码放入其中具体文件目录如下(不一定非要这么放个人习惯):
此处我在TP框架代码根目录下创建了一个workman的文件夹,让后将官方示例代码放入其中

核心代码介绍

首先需要注意的是start_gateway.php文件中对客户端外放的协议与端口(宝塔与安全组记得开放),具体代码位置如下:

// 需要注意的就是这句话
$gateway = new Gateway("tcp://0.0.0.0:8282");
//其中tcp指定的是协议,此处还可以写websocket,具体看客户端与服务端采用什么协议通讯(两者要使用相同的协议)
//其中8282是外放给客户端的通讯端口

其次就是业务逻辑处理部分,对应的文件是Events.php而通常用到的方法就是onMessage用来处理收到客户端发送的数据

//参数$client_id为当前连接服务端的客户端ID
//$message为客户端发来的数据
//此处仅仅是展示,根据实际情况自行修改
public static function onMessage($client_id, $message)
{
   
    $data = json_decode($message, true);//对数据进行解json处理(自行判断是否需要)
    $type=$data[
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值