- ServerManager
- 创建主服务
- 创建子服务
- 获取服务
- 获取注册事件类 getMainEventRegister
- start和isStart
- getSubServerRegister
ServerManager
服务管理类: EasySwoole\EasySwoole\ServerManager
ServerManager 它是一个单例类(use EasySwoole\Component\Singleton)
创建主服务
在EasySwooleEvent的mainServerCreate事件中可通过createSwooleServer监听子服务.
该方法在框架底层自动调用,将创建一个swoole主服务(未开启服务),可通过getSwooleServer方法获取,并设置事件回调,调用原生swoole服务方法创建子服务,等
创建子服务
在EasySwooleEvent的mainServerCreate事件中可通过addServer监听子服务.
<?phppublic static function mainServerCreate(EventRegister $register){################# tcp 服务器1 没有处理粘包 #####################$tcp1ventRegister = $subPort1 = ServerManager::getInstance()->addServer('tcp1', 9502, SWOOLE_TCP, '0.0.0.0', ['open_length_check' => false,//不验证数据包]);$tcp1ventRegister->set(EventRegister::onConnect,function (\swoole_server $server, int $fd, int $reactor_id) {echo "tcp服务1 fd:{$fd} 已连接\n";$str = '恭喜你连接成功服务器1';$server->send($fd, $str);});$tcp1ventRegister->set(EventRegister::onClose,function (\swoole_server $server, int $fd, int $reactor_id) {echo "tcp服务1 fd:{$fd} 已关闭\n";});$tcp1ventRegister->set(EventRegister::onReceive,function (\swoole_server $server, int $fd, int $reactor_id, string $data) {echo "tcp服务1 fd:{$fd} 发送消息:{$data}\n";});}
addServer方法返回的是EventRegister方法注册类,可通过该类去注册/设置服务的事件回调
获取服务
通过getSwooleServer可获取当前创建的swoole服务以及监听的子服务
<?php/*** Created by PhpStorm.* User: Apple* Date: 2018/11/1 0001* Time: 11:10*/namespace App\HttpController;use EasySwoole\EasySwoole\ServerManager;use EasySwoole\Http\AbstractInterface\Controller;class Index extends Controller{function index(){// TODO: Implement index() method.}function push(){$fd = intval($this->request()->getRequestParam('fd'));$info = ServerManager::getInstance()->getSwooleServer()->connection_info($fd);if(is_array($info)){ServerManager::getInstance()->getSwooleServer()->send($fd,'push in http at '.time());}else{$this->response()->write("fd {$fd} not exist");}}}
同样,也可以在EasySwooleEvent的mainServerCreate事件 通过这个获取到主服务之后,添加一个自定义进程
ServerManager::getInstance()->getSwooleServer()->addProcess((new Test('test_process'))->getProcess());
获取到的是swoole的服务,可使用swoole服务所有的方法.
获取注册事件类 getMainEventRegister
getMainEventRegister方法可获取主服务的事件注册类,该类可注册主服务的事件回调
该方法框架底层自动调用,在mainServerCreate事件中,传入到EasySwooleEvent的mainServerCreate方法作为参数使用,例如为主服务注册onWorkerStart事件
<?phppublic static function mainServerCreate(EventRegister $register){$register->add($register::onWorkerStart,function (\swoole_server $server,int $workerId){var_dump($workerId.'start');});}
start和isStart
start方法将处理配置的swoole主服务,子服务,以及回调事件,并开启服务,该方法由框架内部调用,调用成功代表着服务已经启动成功.isStart 方法将返回服务是否启动成功的bool变量
getSubServerRegister
getSubServerRegister将获取到所有子服务创建的事件回调.
