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;