diff --git a/Server/ServerManager.php b/Server/ServerManager.php index 2e24e308..b30cde59 100644 --- a/Server/ServerManager.php +++ b/Server/ServerManager.php @@ -15,6 +15,7 @@ use Snowflake\Snowflake; use Swoole\Http\Server as HServer; use Swoole\Process; use Swoole\Server; +use Swoole\Server\Port; use Swoole\WebSocket\Server as WServer; @@ -98,7 +99,7 @@ class ServerManager extends Abstracts\Server foreach ($this->sortService($configs['ports']) as $config) { $this->startListenerHandler($context, $config); } - $this->addServerEventCallback($this->getSystemEvents($configs)); + $this->bindCallback($this->server, $this->getSystemEvents($configs)); } @@ -327,7 +328,6 @@ class ServerManager extends Abstracts\Server */ private function addDefaultListener(string $type, array $settings): void { - $this->addServerEventCallback($settings['events']); if (($this->server->setting['task_worker_num'] ?? 0) > 0) { $this->addTaskListener($settings['events']); } @@ -371,28 +371,6 @@ class ServerManager extends Abstracts\Server } - /** - * @param array $events - * @throws NotFindClassException - * @throws ReflectionException - */ - private function addServerEventCallback(array $events): void - { - if (count($events) < 1) { - return; - } - foreach ($events as $event_type => $callback) { - if ($this->server->getCallback($event_type) !== null) { - continue; - } - if (is_array($callback) && !is_object($callback[0])) { - $callback[0] = Snowflake::getDi()->get($callback[0]); - } - $this->server->on($event_type, $callback); - } - } - - /** * @param TaskExecute|string $handler * @param array $params @@ -418,7 +396,6 @@ class ServerManager extends Abstracts\Server /** * @param array $events - * @throws NotFindClassException * @throws ReflectionException */ private function addTaskListener(array $events = []): void @@ -432,4 +409,28 @@ class ServerManager extends Abstracts\Server } $this->server->on('finish', $events[Constant::FINISH] ?? [$reflect, 'onFinish']); } + + + /** + * @param Port|Server $server + * @param array|null $settings + * @throws NotFindClassException + * @throws ReflectionException + */ + public function bindCallback(Port|Server $server, ?array $settings = []) + { + // TODO: Implement bindCallback() method. + if (count($settings) < 1) { + return; + } + foreach ($settings as $event_type => $callback) { + if ($this->server->getCallback($event_type) !== null) { + continue; + } + if (is_array($callback) && !is_object($callback[0])) { + $callback[0] = Snowflake::getDi()->get($callback[0]); + } + $this->server->on($event_type, $callback); + } + } }