diff --git a/HttpServer/Events/OnClose.php b/HttpServer/Events/OnClose.php index 745e0124..c1c9fc20 100644 --- a/HttpServer/Events/OnClose.php +++ b/HttpServer/Events/OnClose.php @@ -7,6 +7,7 @@ namespace HttpServer\Events; use Annotation\Route\Socket; use HttpServer\Abstracts\Callback; use HttpServer\Route\Node; +use Snowflake\Abstracts\Config; use Snowflake\Event; use Snowflake\Exception\ComponentException; use Snowflake\Snowflake; @@ -50,9 +51,12 @@ class OnClose extends Callback return; } - $node = $router->tree_search(explode('/', Socket::CLOSE . '::event'), 'sw::socket'); - -// $node = $router->search('/' . Socket::CLOSE . '::event', 'sw::socket'); + $context = Config::get('router', false, ROUTER_TREE); + if ($context === ROUTER_TREE) { + $node = $router->tree_search(explode('/', Socket::CLOSE . '::event'), 'sw::socket'); + } else { + $node = $router->search('/' . Socket::CLOSE . '::event', 'sw::socket'); + } if ($node instanceof Node) { $node->dispatch($server, $fd); } diff --git a/HttpServer/Events/OnHandshake.php b/HttpServer/Events/OnHandshake.php index 22b98485..308ba072 100644 --- a/HttpServer/Events/OnHandshake.php +++ b/HttpServer/Events/OnHandshake.php @@ -7,6 +7,7 @@ namespace HttpServer\Events; use Annotation\Route\Socket; use Exception; use HttpServer\Abstracts\Callback; +use Snowflake\Abstracts\Config; use Snowflake\Event; use Snowflake\Exception\ComponentException; use Snowflake\Snowflake; @@ -107,8 +108,12 @@ class OnHandshake extends Callback } $router = Snowflake::app()->getRouter(); - $node = $router->tree_search(explode('/', Socket::HANDSHAKE . '::event'), 'sw::socket'); -// $node = $router->search('/' . Socket::HANDSHAKE . '::event', 'sw::socket'); + $context = Config::get('router', false, ROUTER_TREE); + if ($context === ROUTER_TREE) { + $node = $router->tree_search(explode('/', Socket::HANDSHAKE . '::event'), 'sw::socket'); + } else { + $node = $router->search('/' . Socket::HANDSHAKE . '::event', 'sw::socket'); + } if ($node === null) { return $this->disconnect($response, 502); } @@ -120,5 +125,4 @@ class OnHandshake extends Callback } - } diff --git a/HttpServer/Events/OnMessage.php b/HttpServer/Events/OnMessage.php index 3c543109..fb3f663b 100644 --- a/HttpServer/Events/OnMessage.php +++ b/HttpServer/Events/OnMessage.php @@ -8,6 +8,7 @@ use Annotation\Route\Socket; use Exception; use HttpServer\Abstracts\Callback; use HttpServer\Http\Context; +use Snowflake\Abstracts\Config; use Snowflake\Event; use Snowflake\Exception\ComponentException; use Snowflake\Snowflake; @@ -64,8 +65,12 @@ class OnMessage extends Callback throw new Exception('Format error.'); } $router = Snowflake::app()->getRouter(); - - $node = $router->tree_search(explode('/', Socket::MESSAGE . '::' . $route), 'sw::socket'); + $context = Config::get('router', false, ROUTER_TREE); + if ($context === ROUTER_TREE) { + $node = $router->tree_search(explode('/', Socket::MESSAGE . '::' . $route), 'sw::socket'); + } else { + $node = $router->search('/' . Socket::HANDSHAKE . '::' . $route, 'sw::socket'); + } if ($node === null) { throw new Exception('Page not found.'); } diff --git a/HttpServer/Route/Router.php b/HttpServer/Route/Router.php index 1627f744..d6d84f64 100644 --- a/HttpServer/Route/Router.php +++ b/HttpServer/Route/Router.php @@ -80,13 +80,12 @@ class Router extends Application implements RouterInterface $this->nodes[$method] = []; } -// $useTree = Config::get('router', false, ROUTER_HASH); -// var_dump($useTree); -// if ($useTree == ROUTER_TREE) { - return $this->tree($path, $handler, $method); -// } else { -// return $this->hash($path, $handler, $method); -// } + $useTree = Config::get('router', false, ROUTER_TREE); + if ($useTree == ROUTER_TREE) { + return $this->tree($path, $handler, $method); + } else { + return $this->hash($path, $handler, $method); + } } @@ -500,10 +499,14 @@ class Router extends Application implements RouterInterface * @param Request $request * @return Node|null 树干搜索 * 树干搜索 + * @throws ConfigException */ private function find_path(Request $request): ?Node { - return $this->Branch_search($request); + $useTree = Config::get('router', false, ROUTER_TREE); + if ($useTree === ROUTER_TREE) { + return $this->Branch_search($request); + } $method = $request->getMethod(); $uri = $request->headers->get('request_uri', '/');