五月天激情丁香,国产精品2019,国产成人精品亚洲2020,国产精品免费视频一区二区三区,开心久久婷婷综合中文字幕,天堂视频在线观看免费完整版

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');
    }
}
主站蜘蛛池模板: 日韩成人精品在线 | 斗破苍穹漫画扑飞在线观看免费版 | 九九久久国产精品免费热6 九九久久国产精品 | 人人狠狠综合久久亚洲88 | 免费高清a级毛片在线播放 久久久久国产一级毛片高清版 | 国产日产一区二区三区四区五区 | run away无删减全集 动漫 | 激情97| 精品久久久久久午夜 | 日本欧美久久久久免费播放网 | 国产成人精品第一区二区 | 免费大学生国产在线观看p 免费成人小视频 | 成人乱码一区二区三区四区 | 成人精品国产亚洲欧洲 | 九九精品视频一区二区三区 | 99视频在线精品免费 | 国产精品久久久久久久久久免费 | 国产美女精品视频 | 国产福利在线永久视频 | a一级视频 | 日韩在线视频一区 | 成人网在线 | www.久久久 | 日本精品久久 | 国产一区国产二区国产三区 | 国产午夜电影在线观看 | a级毛片在线视频免费观看 一级片视频在线 | 精品无人区一区二区三 | 婷婷六| 狠狠操综合网 | 老色99久久九九精品尤物 | 色色视频免费网 | 美女污视频网站 | 99免费看| 久久精品久久久久观看99水蜜桃 | 九月激情网 | 国产成人aa在线视频 | 午夜欧美成人久久久久久 | 久久精品视频免费 | 日韩在线免费视频 | 奇米影音先锋 |