From aa6d65510c3deec5af2daa18fa301b81ce1c1e16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Mon, 2 Nov 2020 14:45:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HttpServer/Events/OnClose.php | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/HttpServer/Events/OnClose.php b/HttpServer/Events/OnClose.php index 1530dd61..aa769b4a 100644 --- a/HttpServer/Events/OnClose.php +++ b/HttpServer/Events/OnClose.php @@ -7,6 +7,7 @@ namespace HttpServer\Events; use HttpServer\Abstracts\Callback; use HttpServer\Route\Annotation\Annotation; use HttpServer\Route\Annotation\Tcp; +use HttpServer\Route\Annotation\Websocket; use HttpServer\Route\Annotation\Websocket as AWebsocket; use Snowflake\Event; use Snowflake\Snowflake; @@ -32,11 +33,12 @@ class OnClose extends Callback { try { [$manager, $name] = $this->resolve($server, $fd); - if ($manager !== null && !$manager->has($name)) { - $manager->runWith($name, [$fd]); + if (!$manager->has($name)) { + return; } + $manager->runWith($name, [$fd]); } catch (\Throwable $exception) { - $this->addError($exception->getMessage()); + $this->addError($exception); } finally { $event = Snowflake::app()->event; $event->trigger(Event::RELEASE_ALL); @@ -55,19 +57,14 @@ class OnClose extends Callback */ public function resolve($server, $fd) { - if ($server instanceof WServer) { - if (!$server->isEstablished($fd)) { - return [null, null]; - } - $manager = Snowflake::app()->annotation->get('websocket'); - $name = $manager->getName(AWebsocket::CLOSE); - } else if ($server instanceof HServer) { - $manager = Snowflake::app()->annotation->get('http'); - $name = $manager->getName(Annotation::CLOSE); - } else { - $manager = Snowflake::app()->annotation->get('tcp'); - $name = $manager->getName(Tcp::CLOSE); + if (!($server instanceof WServer)) { + return [null, null]; } + if (!$server->isEstablished($fd)) { + return [null, null]; + } + $manager = Snowflake::app()->annotation->get('websocket'); + $name = $manager->getName(AWebsocket::CLOSE); return [$manager, $name]; }