安装

根据自己的需要进行安装

websocket

  1. composer require textalk/websocket

创建自定义指令

创建一个自定义命令类文件,运行指令

php think make:command Forwarding forwarding

会生成一个app\command\Forwarding命令行指令类,我们修改内容如下:

<?php
declare (strict_types = 1);

namespace app\command;

use app\forwarding\extend\websocket\WebsocketStart;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use app\forwarding\extend\Config;

class Forwarding extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('forwarding')
            ->addArgument('kind', Argument::OPTIONAL, "监听转发的类型",'')
            ->addOption('event', null, Option::VALUE_OPTIONAL, '需要执行的事件')
            ->setDescription('启动监听转发系统');
    }

    protected function execute(Input $input, Output $output)
    {
        $kind = trim($input->getArgument('kind'));
        $kind = $kind ?: Config::WEBSOCKET_KIND;
        if($kind == Config::WEBSOCKET_KIND) {
            $event = $input->hasOption('event') ? $input->getOption('event') : '';
            $output->writeln("> 启动Websocket监听中");
            (new WebsocketStart())->start($event);
        } else {
            $output->writeln("抱歉,转发参数错误");
        }
    }
}

配置config/console.php文件

return [
      // 指令定义
    'commands' => [
        'forwarding' => 'app\command\Forwarding',
    ],
];

更多配置信息查看对应监听内容的配置

启动

参数 说明 必填
websocket 需要监听的类型 (目前只支持 websocket )
event 需要执行的事件
php think forwarding websocket --event 1

image.png

保护进程

image.png