From 6cdb8274166f8dd37f493d787c3c46086c64ce33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Tue, 1 Sep 2020 04:24:36 +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 --- http-server/Events/WebSocket.php | 25 +++++++--------------- http-server/Route/Annotation/Websocket.php | 2 +- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/http-server/Events/WebSocket.php b/http-server/Events/WebSocket.php index ba75063e..22376464 100644 --- a/http-server/Events/WebSocket.php +++ b/http-server/Events/WebSocket.php @@ -115,12 +115,9 @@ class WebSocket extends Server */ protected function connect($request, $response) { - $manager = Snowflake::get()->event; - if ($manager->exists(Event::SERVER_HANDSHAKE)) { - return $manager->trigger(Event::SERVER_HANDSHAKE, [$request, $response]); - } - $response->status(502); - $response->end(); + /** @var AWebsocket $manager */ + $manager = Snowflake::get()->annotation->get('websocket'); + $manager->runWith($manager->getName(AWebsocket::HANDSHAKE), [$request, $response]); return true; } @@ -154,13 +151,7 @@ class WebSocket extends Server foreach ($headers as $key => $val) { $response->header($key, $val); } - if (isset($request->get['debug']) && $request->get['debug'] == 'test') { - $response->status(101); - $response->end(); - return true; - } else { - return $this->connect($request, $response); - } + return $this->connect($request, $response); } /** @@ -170,14 +161,14 @@ class WebSocket extends Server */ public function onClose(Server $server, int $fd) { - $event = Snowflake::get()->event; try { - if ($event->exists(Event::SERVER_CLOSE)) { - $event->trigger(Event::SERVER_CLOSE, [$fd]); - } + /** @var AWebsocket $manager */ + $manager = Snowflake::get()->annotation->get('websocket'); + $manager->runWith($manager->getName(AWebsocket::CLOSE), [$fd]); } catch (\Throwable $exception) { $this->application->addError($exception->getMessage()); } finally { + $event = Snowflake::get()->event; $event->trigger(Event::RELEASE_ALL); Logger::insert(); } diff --git a/http-server/Route/Annotation/Websocket.php b/http-server/Route/Annotation/Websocket.php index fa4d13dd..63c9c43e 100644 --- a/http-server/Route/Annotation/Websocket.php +++ b/http-server/Route/Annotation/Websocket.php @@ -52,7 +52,7 @@ class Websocket extends Annotation * @param $comment * @return false|string */ - public function getName($events, $comment) + public function getName($events, $comment = []) { $prefix = rtrim('WEBSOCKET:ANNOTATION:' . $events, ':'); if (isset($comment[2])) {