easyswoole - 基于swoole扩展实现的一款高性能php框架

Socket 控制器

組件安裝

composer require easyswoole/socket

Examples

關于 Socket 控制器使用的具體示例,請查看 demo

包解析與控制器邏輯

數據解析與控制器映射

數據解析和控制器映射,開發者可以通過實現 \EasySwoole\Socket\AbstractInterface\ParserInterface 接口的來實現,然后在 encode 方法中實現數據解析和控制器映射。使用方法可以參考下面的示例。

下面以實現一個 tcp socket 控制器為例。首先定義協議解析器類 TcpParser 類,該類需要實現 \EasySwoole\Socket\AbstractInterface\ParserInterface 接口。如下:

<?php
namespace App\Parser;

use EasySwoole\Socket\AbstractInterface\ParserInterface;
use EasySwoole\Socket\Bean\Caller;

class TcpParser implements ParserInterface
{
    public function decode($raw, $client): ?Caller
    {
        // 數據解析,這里采用簡單的json格式作為應用層協議
        $data       = substr($raw, 4);
        $data       = json_decode($data, true);

        // 實現與控制器和action的映射
        $caller     = new Caller();
        $controller = !empty($data['controller']) ? $data['controller'] : 'Index';
        $action     = !empty($data['action']) ? $data['action'] : 'index';
        $param      = !empty($data['param']) ? $data['param'] : [];
        $controller = "App\\TcpController\\{$controller}";
        $caller->setControllerClass($controller);
        $caller->setAction($action);
        $caller->setArgs($param);
        return $caller;
    }

    // ... encode 方法
}

數據的打包與響應

對于數據的打包,開發者可以通過實現 \EasySwoole\Socket\AbstractInterface\ParserInterface 接口的來實現,然后在 decode 方法中實現數據的打包。使用方法可以參考下面的示例。

<?php
namespace App\Parser;

use EasySwoole\Socket\AbstractInterface\ParserInterface;
use EasySwoole\Socket\Bean\Response;

class TcpParser implements ParserInterface
{
    // ... decode 方法

    public function encode(Response $response, $client): ?string
    {
        // 實現對數據的打包
        return pack('N', strlen(strval($response->getMessage()))) . $response->getMessage();
    }
}

關于對數據的響應,則需要開發者在控制器的 action 進行處理,調用 $this->response()->setMessage($message) 進行響應調用端。參考示例如下:

<?php
namespace App\TcpController;

use EasySwoole\Socket\AbstractInterface\Controller;

class Index extends Controller
{
    public function index()
    {
        // 這里我們響應一個字符串'this is index'給調用端
        $this->response()->setMessage('this is index');
    }
}
主站蜘蛛池模板: 树枝粉碎机,锯末机,木材粉碎机的专业生产厂家利鑫机械,问价格找利鑫 | 水电站泵站LCU控制屏_发电机保护_变压器保护_逆功率保护_防孤岛保护装置_ 电力微机保护网 | 苏州温测仪器有限公司-苏州炉温跟踪仪|苏州隔热箱|苏州炉温测试仪|苏州恒温恒湿箱 | 机械设备回收_二手机器回收_设备拆除回收_广州益美机械设备回收公司 | 校园文化设计|文化墙建设|校园景观雕塑|校史馆设计-深圳市天合文化 | 烟气在线监测系统_VOCs在线监测_分析仪「杭州世驰科技」 | 举升机,登高梯,升降平台,升降车,升降机,高空作业平台车 | 皮带输送机(输送机械)-带式输送机-皮带输送机生产厂家-河南坤威机械 | 萍乡赣西肿瘤医院|萍乡赣西肿瘤医院--官网-萍乡赣西肿瘤医院 | 耐压测试仪(检测电气设备绝缘性能)百科 | 曙海培训-ZEMAX培训射频培训无线电培训GMS培训EMC培训电磁兼容性培训Maxwell培训欧姆龙培训procast培训可靠性培训光学培训工业机器人培训NI培训Linux培训5G培训Hadoop培训CFD培训 | 切割片-砂轮片-抛光片-磨片-方格片-百叶片生产厂家定制加工-达蒙砂轮价格优惠 | 噪声治理,消声器,隔声屏障,隔声罩,噪声控制,降噪,空调降噪,水泵噪声治理,冷却塔噪声治理-北京华清恒业环保设备有限公司 | 生物柴油设备,乙醇精馏塔,醋酸精馏塔生产厂家-无锡弘鼎华化工设备有限公司 | 陕西西安升降机_导轨式升降货梯_电动固定剪叉式升降平台_甘肃兰州液压机械厂家 | 葫芦岛市鹏翔农药化工科技有限公司-苦参碱可溶液剂-氯氰菊酯乳油-阿维菌素乳油 | 今日标准_走心机_数控走心机_车铣复合_厂家_深圳今日标准官方网站 | 全自动码垛机|码垛机器人|高位码垛机械手|拆垛机|缠绕机|山东腾阳智能装备有限公司 | 首页--南京俊全科技有限公司,环保监测无人机,大疆无人机,农用无人机,植保无人机,巡检无人机,无人机环境监测仪,消防,无人机,航拍测绘,固定翼无人机,无人机电力巡检,四旋翼无人机 | 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 康明斯柴油发电机厂家-康明斯发电机(深圳)有限公司 | 涡街流量计罗茨气体涡轮厂家_衡水多元仪表有限公司 | 九江市石化塑业有限公司| 双合金_注塑机_螺杆|炮筒|料管|料筒-广东海驰德塑胶机械有限公司 | 天津安检机-天津安检门-安检设备租赁-安检设备厂家-华创永信 | 生物质蒸发器_燃气蒸发器_燃气锅炉价格|厂家直销-山东泰锅锅炉设备有限公司 | 深圳中安视讯科技发展有限公司 - 深圳中安视讯科技发展有限公司 深圳展厅设计_产业园区展馆设计_展馆设计公司_健康产业展馆设计_展厅设计哪家好_华竣国际 | 长型材数控钻孔攻牙机-自动数控热熔钻孔机-东莞市利速数控机械有限公司 | 升降机_举升机_液压升降机_化工防爆升降平台_山东华雄机械有限公司 | 太原万通汽车学校[官网]-太原好的汽修培训学校,学新能源汽车技术,学汽修,学汽车检测与维修技术 | 假肢价格-大腿假肢小腿假肢假手指-河南舒捷假肢厂家 | 机械设备回收_二手机器回收_设备拆除回收_广州益美机械设备回收公司 | 湖南长沙智能实验室规划设计、整体建设、净化装修、改造施工公司-福临建设 | 液位变送器_智能压力变送器_3051差压变送器_单双法兰,投入式,电容式,温度变送器-淮安润中仪表科技有限公司 | 南京文化墙设计公司,南京包装设计制作印刷,南京PPT设计公司,导视制作公司,企业logo设计 | 煤炭烘干机|煤泥烘干机|矿泥烘干机|酒糟烘干机|果渣烘干机-东鼎干燥官方网站 | 硬度计-布氏硬度计-维氏硬度计-莱洛特试验仪器有限公司 | 山东亮化工程_亮化公司_亮化资质-山东星汇照明工程有限公司 | 无锡纯铁-中纯特钢纯铁公司| 泥沙泵_脱硫泵_潜水泵_离心泵_渣浆泵厂家|诚信为先-泰安华泰泵业制造有限公司 | 豪顺物流官网-南京物流公司,南京货运公司「全国专线配送」 |