From 51b5cadab9ea09d67312c2b60eef51f60be9aecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Wed, 31 Mar 2021 14:53:19 +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/OnMessage.php | 51 ++++++--------------------------- 1 file changed, 9 insertions(+), 42 deletions(-) diff --git a/HttpServer/Events/OnMessage.php b/HttpServer/Events/OnMessage.php index f977eddf..2f63a57f 100644 --- a/HttpServer/Events/OnMessage.php +++ b/HttpServer/Events/OnMessage.php @@ -38,14 +38,15 @@ class OnMessage extends Callback public function onHandler(Server $server, Frame $frame) { try { - if ($frame->opcode == 0x08) { + if ($frame->opcode !== 0x08) { return; } + $clientInfo = $server->getClientInfo($frame->fd); $event = Snowflake::app()->getEvent(); - $content = $this->resolve($event, $frame, $server); - if (!empty($content)) { - $server->send($frame->fd, $content); + if (!$event->exists($name = $this->getName($clientInfo))) { + return; } + $event->trigger($name, [$frame, $server]); } catch (\Throwable $exception) { $this->addError($exception, 'websocket'); $server->send($frame->fd, $exception->getMessage()); @@ -55,48 +56,14 @@ class OnMessage extends Callback } } - /** - * @param $event - * @param Frame $frame - * @param $server - * @return mixed - * @throws Exception - */ - private function resolve($event, Frame $frame,Server $server): mixed - { - $clientInfo = $server->getClientInfo($frame->fd); - - $eventName = 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_MESSAGE; - if ($event->exists($eventName)) { - $event->trigger($eventName, [$server, $frame]); - } else { - $frame->data = json_decode($frame->data, true); - } - if (!empty($route = $frame->data['route'] ?? null)) { - return $this->loadNode($frame, $route, $server); - } - return null; - } - /** - * @param $frame - * @param $route - * @param $server - * @return mixed - * @throws ComponentException - * @throws ReflectionException - * @throws ConfigException - * @throws NotFindClassException - * @throws Exception + * @param $clientInfo + * @return string */ - private function loadNode($frame, $route, $server): mixed + private function getName($clientInfo): string { - $query = Request::socketQuery($frame, Socket::MESSAGE, $route); - if (($node = router()->find_path($query)) !== null) { - return $node->dispatch($frame, $server); - } - return null; + return 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_MESSAGE; } }