From cf8866d1ce1a6886d6880351157d4a28499e4d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Fri, 27 Nov 2020 14:52:04 +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 | 8 +++++--- HttpServer/Events/OnHandshake.php | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/HttpServer/Events/OnClose.php b/HttpServer/Events/OnClose.php index e2973dad..02eab9ab 100644 --- a/HttpServer/Events/OnClose.php +++ b/HttpServer/Events/OnClose.php @@ -11,6 +11,7 @@ use HttpServer\Route\Annotation\Websocket; use HttpServer\Route\Annotation\Websocket as AWebsocket; use Snowflake\Event; use Snowflake\Snowflake; +use Swoole\Coroutine; use Swoole\Server; use Exception; use Swoole\Http\Server as HServer; @@ -33,6 +34,10 @@ class OnClose extends Callback public function onHandler(Server $server, int $fd) { try { + $event = Snowflake::app()->getEvent(); + Coroutine::defer(function () use ($event) { + $event->trigger(Event::EVENT_AFTER_REQUEST); + }); [$manager, $name] = $this->resolve($server, $fd); if (empty($manager) || !$manager->has($name)) { return; @@ -41,9 +46,6 @@ class OnClose extends Callback } catch (\Throwable $exception) { $this->addError($exception); } finally { - $event = Snowflake::app()->event; - $event->trigger(Event::RELEASE_ALL); - $logger = Snowflake::app()->getLogger(); $logger->insert(); } diff --git a/HttpServer/Events/OnHandshake.php b/HttpServer/Events/OnHandshake.php index 397ae711..f5439d16 100644 --- a/HttpServer/Events/OnHandshake.php +++ b/HttpServer/Events/OnHandshake.php @@ -10,6 +10,7 @@ use HttpServer\Route\Annotation\Websocket as AWebsocket; use Snowflake\Event; use Snowflake\Exception\ComponentException; use Snowflake\Snowflake; +use Swoole\Coroutine; use Swoole\Http\Request as SRequest; use Swoole\Http\Response as SResponse; use Swoole\WebSocket\Server; @@ -77,6 +78,9 @@ class OnHandshake extends Callback public function onHandler(SRequest $request, SResponse $response) { try { + Coroutine::defer(function () { + fire(Event::EVENT_AFTER_REQUEST); + }); $this->resolveParse($request, $response); $manager = Snowflake::app()->annotation->websocket;