午夜免费_欧美一级免费看_欧美日韩一区二区视频在线观看_午夜视频在线_日本特黄a级高清免费大片_成年人黄色小视频

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');
    }
}
主站蜘蛛池模板: 干片网在线观看 | 国产视频三区 | 国产精品一二区 | 亚洲一区蜜桃 | 久久久久久久久久久久久久久国产 | 亚洲天堂一 | 亚洲天堂一 | 成人久久 | www.guochan | 91玖玖| 九色自拍视频在线观看 | 日本成人网址 | 一区二区三区不卡免费视频97 | 亚洲天堂成人在线视频 | 国产一区二区三区久久悠悠色av | 91视频网址 | 一区精品国产欧美在线 | 久草污视频 | 成年免费视频 | 99久久夜色精品国产亚洲96 | 91pro在线观看 | 久久久久国产成人免费精品免费 | 9色视频在线观看 | 九色视频免费在线观看 | 91亚洲国产成人久久精品网站 | 久久久久久久久久久久久久久伊免 | 91.xxx.高清在线| 免费成人午夜视频 | 91av手机在线 | 国产成人精品一区二区三 | 91精品久久久久久久久中文字幕 | 中文字幕第二色 | 国产中文一区 | 91av电影在线观看 | 99色热| 亚洲一区二区三区四区 | 九九热免费精品视频 | 91手机电影| 国产福利小视频在线 | 天堂精品一区二区三区 | 午夜一区二区在线观看 |