From 25b78fd0c589a151a558dca32305854abd6f84c2 Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Sat, 24 Apr 2021 17:40:34 +0800 Subject: [PATCH] modify --- HttpServer/Events/OnMessage.php | 61 +++++++++++++------------ HttpServer/Events/OnReceive.php | 80 ++++++++++++++++++--------------- 2 files changed, 75 insertions(+), 66 deletions(-) diff --git a/HttpServer/Events/OnMessage.php b/HttpServer/Events/OnMessage.php index 5ea63dbc..5b3ea1b1 100644 --- a/HttpServer/Events/OnMessage.php +++ b/HttpServer/Events/OnMessage.php @@ -30,41 +30,44 @@ use Swoole\WebSocket\Server; class OnMessage extends Callback { - /** - * @param Server $server - * @param Frame $frame - * @throws - */ - public function onHandler(Server $server, Frame $frame) - { - try { + /** + * @param Server $server + * @param Frame $frame + * @throws + */ + public function onHandler(Server $server, Frame $frame) + { + try { defer(function () { fire(Event::SYSTEM_RESOURCE_CLEAN); }); if ($frame->opcode === 0x08) { - return; - } - $clientInfo = $server->getClientInfo($frame->fd); - $event = Snowflake::app()->getEvent(); + return; + } + $clientInfo = $server->getClientInfo($frame->fd); + $event = Snowflake::app()->getEvent(); - 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()); - } - } + if (!$event->exists(($name = $this->getName($clientInfo)))) { + return; + } + $event->trigger($name, [$frame, $server]); + } catch (\Throwable $exception) { + $this->addError($exception, 'websocket'); + if (!swoole()->exist($frame->fd)) { + return; + } + $server->send($frame->fd, $exception->getMessage()); + } + } - /** - * @param $clientInfo - * @return string - */ - private function getName($clientInfo): string - { - return 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_MESSAGE; - } + /** + * @param $clientInfo + * @return string + */ + private function getName($clientInfo): string + { + return 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_MESSAGE; + } } diff --git a/HttpServer/Events/OnReceive.php b/HttpServer/Events/OnReceive.php index 91c57147..ab5a9e9d 100644 --- a/HttpServer/Events/OnReceive.php +++ b/HttpServer/Events/OnReceive.php @@ -22,51 +22,57 @@ use Swoole\Server; class OnReceive extends Callback { - public int $port = 0; + public int $port = 0; - public string $host = ''; + public string $host = ''; - private Router $router; + private Router $router; - public function init() - { - $this->router = Snowflake::app()->getRouter(); - } + public function init() + { + $this->router = Snowflake::app()->getRouter(); + } - /** - * @param Server $server - * @param int $fd - * @param int $reID - * @param string $data - * @return mixed - * @throws Exception - */ - public function onHandler(Server $server, int $fd, int $reID, string $data): mixed - { - try { - defer(function (){ - fire(Event::SYSTEM_RESOURCE_RELEASES); - }); - $request = $this->_request($fd, $data, $reID); - if (($node = $this->router->find_path($request)) === null) { - return $server->send($fd, Json::encode(['state' => 404])); - } - $dispatch = $node->dispatch(); - if (!is_string($dispatch)) $dispatch = Json::encode($dispatch); - if (empty($dispatch)) { - $dispatch = Json::encode(['state' => 0, 'message' => 'ok']); - } - return $server->send($fd, $dispatch); - } catch (\Throwable $exception) { - $this->addError($exception, 'receive'); - $error = ['state' => 500, 'message' => $exception->getMessage()]; - return $server->send($fd, Json::encode($error)); - } - } + /** + * @param Server $server + * @param int $fd + * @param int $reID + * @param string $data + * @return mixed + * @throws Exception + */ + public function onHandler(Server $server, int $fd, int $reID, string $data): mixed + { + try { + defer(function () { + fire(Event::SYSTEM_RESOURCE_RELEASES); + }); + $request = $this->_request($fd, $data, $reID); + if (($node = $this->router->find_path($request)) === null) { + return $server->send($fd, Json::encode(['state' => 404])); + } + $dispatch = $node->dispatch(); + if (!is_string($dispatch)) $dispatch = Json::encode($dispatch); + if (empty($dispatch)) { + $dispatch = Json::encode(['state' => 0, 'message' => 'ok']); + } + if ($server->exist($fd)) { + return $server->send($fd, $dispatch); + } + return $dispatch; + } catch (\Throwable $exception) { + $this->addError($exception, 'receive'); + $error = ['state' => 500, 'message' => $exception->getMessage()]; + if ($server->exist($fd)) { + return $server->send($fd, Json::encode($error)); + } + return Json::encode($error); + } + } }