From 81461f7b5a1a0be4312f2078e8278bce2bcabeba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Mon, 8 Mar 2021 18:29:59 +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 | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/HttpServer/Events/OnClose.php b/HttpServer/Events/OnClose.php index 5204e75d..c2d32f98 100644 --- a/HttpServer/Events/OnClose.php +++ b/HttpServer/Events/OnClose.php @@ -46,13 +46,12 @@ class OnClose extends Callback private function execute(Server $server, int $fd): void { try { - if (!$server instanceof WebsocketServer) { - return; + if (!$this->isWebsocket($server, $fd)) { + $client = $server->getClientInfo($fd); + fire($this->name($client['server_port']), [$server, $fd]); + } else { + $this->loadNode($server, $fd); } - if (!$server->isEstablished($fd)) { - return; - } - $this->loadNode($server, $fd); } catch (\Throwable $exception) { $this->addError($exception); } finally { @@ -62,6 +61,27 @@ class OnClose extends Callback } + /** + * @param $server_port + * @return string + */ + private function name($server_port): string + { + return 'listen ' . $server_port . ' ' . Event::SERVER_CLOSE; + } + + + /** + * @param $server + * @param $fd + * @return bool + */ + private function isWebsocket($server, $fd): bool + { + return $server instanceof WebsocketServer && $server->isEstablished($fd); + } + + /** * @param $server * @param $fd