This commit is contained in:
2021-07-20 11:48:41 +08:00
parent 4164104918
commit f87c437d60
+18 -5
View File
@@ -3,13 +3,19 @@
namespace Server; namespace Server;
use Exception; use Exception;
use HttpServer\Exception\ExitException;
use HttpServer\Http\Request as HRequest;
use HttpServer\Http\Response as HResponse;
use HttpServer\Route\Router; use HttpServer\Route\Router;
use ReflectionException; use ReflectionException;
use Snowflake\Event;
use Snowflake\Exception\NotFindClassException; use Snowflake\Exception\NotFindClassException;
use Snowflake\Snowflake; use Snowflake\Snowflake;
use Swoole\Error;
use Swoole\Http\Request; use Swoole\Http\Request;
use Swoole\Http\Response; use Swoole\Http\Response;
use Swoole\Server; use Swoole\Server;
use Throwable;
/** /**
@@ -84,13 +90,20 @@ class HTTPServerListener extends Abstracts\Server
*/ */
public function onRequest(Request $request, Response $response) public function onRequest(Request $request, Response $response)
{ {
$this->router->find_path(new \HttpServer\Http\Request()); try {
defer(fn() => fire(Event::SYSTEM_RESOURCE_RELEASES));
if (!$response->isWritable()) { /** @var HResponse $response */
return; [$request, $response] = [HRequest::create($request), HResponse::create($response)];
if ($request->is('favicon.ico')) {
$response->close(404);
} else {
$this->router->dispatch();
}
} catch (ExitException | Error | Throwable $exception) {
$response->status($exception->getCode() == 0 ? 500 : $exception->getCode());
$response->end($exception->getMessage());
} }
$response->status(200);
$response->end('');
} }