diff --git a/HttpServer/Events/OnHandshake.php b/HttpServer/Events/OnHandshake.php index 4ac4e740..3eb66faf 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 HttpServer\Http\Request; use Snowflake\Abstracts\Config; use Snowflake\Event; use Snowflake\Exception\ComponentException; @@ -108,14 +109,12 @@ class OnHandshake extends Callback } $router = Snowflake::app()->getRouter(); - $context = Config::get('router', false, ROUTER_TREE); - var_dump($context); - 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) { + $sRequest = Request::create($request); + $sRequest->uri = '/' . Socket::HANDSHAKE . '::event'; + $sRequest->headers->replace('request_method', 'sw::socket'); + $sRequest->parseUri();; + + if (($node = $router->find_path($sRequest)) === null) { return $this->disconnect($response, 502); } return $node->dispatch($request, $response); diff --git a/HttpServer/Route/Router.php b/HttpServer/Route/Router.php index 94bf081a..a414f572 100644 --- a/HttpServer/Route/Router.php +++ b/HttpServer/Route/Router.php @@ -500,7 +500,7 @@ class Router extends HttpService implements RouterInterface * 树干搜索 * @throws ConfigException */ - private function find_path(Request $request): ?Node + public function find_path(Request $request): ?Node { $useTree = Config::get('router', false, ROUTER_TREE); if ($useTree === ROUTER_TREE) {