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