千家信息网

workerman中后端消息实时推送至前端的方法

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,workerman中后端消息实时推送至前端的方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在开发过程中,我们经常会遇到如下这种情
千家信息网最后更新 2026年11月04日workerman中后端消息实时推送至前端的方法

workerman中后端消息实时推送至前端的方法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在开发过程中,我们经常会遇到如下这种情况。前端列表展示后台数据库中的数据,但是在后台的某一个接口中向数据库插入一条数据,此时数据库已更新,但是前端展示数据并没有更新,需要手动刷新才可以。但是每次都自己手动更新,太麻烦了,这时候就可以用到workerman来解决问题了。

Workerman框架是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、移动通讯,微信小程序,手游服务端、网络游戏、PHP聊天室、硬件通讯、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。拥有异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。

那我们应该如何能使用才能解决上述问题呢?

1.前后端建立websocket的长连接,用于互相的消息推送

2.后端内部在建立一个监听进程(协议不限)

3.在接口往数据库中插入数据成功后,想内部监听端口推送数据

4.在收到内部监听端口的推送消息之后,后端在向前端通过websocket推送消息,实现刷新

在下载好workerman框架源码后,我们来实现上述过程。

实现代码:

server.php

reusePort=true) */$worker->count = 1;// worker进程启动后创建一个text Worker以便打开一个内部通讯端口$worker->onWorkerStart = function($worker){    // 开启一个内部端口,方便内部系统推送数据,Text协议格式 文本+换行符    $inner_text_worker = new Worker('text://0.0.0.0:5678');    $inner_text_worker->onMessage = function($connection, $buffer)    {        // $data数组格式,里面有uid,表示向那个uid的页面推送数据        $data = json_decode($buffer, true);        $uid = $data['uid'];        // 通过workerman,向uid的页面推送数据        $ret = sendMessageByUid($uid, $buffer);        // 返回推送结果        $connection->send($ret ? 'ok' : 'fail');    };    // ## 执行监听 ##    $inner_text_worker->listen();};// 新增加一个属性,用来保存uid到connection的映射$worker->uidConnections = array();// 当有客户端发来消息时执行的回调函数$worker->onMessage = function($connection, $data){    global $worker;    // 判断当前客户端是否已经验证,既是否设置了uid    if(!isset($connection->uid))    {        // 没验证的话把第一个包当做uid(这里为了方便演示,没做真正的验证)        $connection->uid = $data;        /* 保存uid到connection的映射,这样可以方便的通过uid查找connection,         * 实现针对特定uid推送数据         */        $worker->uidConnections[$connection->uid] = $connection;        return;    }}; // 当有客户端连接断开时$worker->onClose = function($connection){    global $worker;    if(isset($connection->uid))    {        // 连接断开时删除映射        unset($worker->uidConnections[$connection->uid]);    }}; // 向所有验证的用户推送数据function broadcast($message){    global $worker;    foreach($worker->uidConnections as $connection)    {        $connection->send($message);    }} // 针对uid推送数据function sendMessageByUid($uid, $message){    global $worker;    if(isset($worker->uidConnections[$uid]))    {        $connection = $worker->uidConnections[$uid];        $connection->send($message);        return true;    }    return false;} // 运行所有的workerWorker::runAll();

push.php

'uid1', 'percent'=>'88%');// 发送数据,注意5678端口是Text协议的端口,Text协议需要在数据末尾加上换行符fwrite($client, json_encode($data)."\n");// 读取推送结果echo fread($client, 8192);  ?>

clien.html

        

运行流程:

打开cmd,运行server.php

打开前端页面和console

在打开一个cmd,运行push.php

此时在看前端页面,console就收收到消息。

关于workerman中后端消息实时推送至前端的方法问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 推送 消息 前端 端口 问题 数据库 页面 监听 运行 验证 方法 客户 客户端 框架 通讯 开发 支持 更新 实时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网高科技 喔噻互联网科技有限公司 广东万易互联网科技有限公司惠州分公司 互联网科技卖菜 互联网 科技公司 易互联网科技有限公司 云电互联网科技 北京禾田雨橡互联网科技 万达互联网科技 互联网养老 桔豆科技 顺网科技2021年互联网排名 老年人脱离互联网科技的作文 团飞科技与伯堂互联网服务平台 杭州壁岐互联网科技有限公司 科技赋能视角下互联网保险发展 合肥互联网科技公司公章图片 元气玛特互联网科技公司是外包吗 广州梦谷互联网科技有限公司领导 中国科技和美国互联网 山东亿川互联网科技有限责任公司 互联网科技公司有哪些 互联网 新科技 新华互联网科技2019 重庆威客帮互联网科技 厦门比较好的科技互联网公司 和信科技工业互联网 健康食品互联网创新科技园项目 下一代互联网重大应用科技园 互联网科技接地气 互联网科技职业技能培训学校
0