This commit is contained in:
2020-11-27 14:57:58 +08:00
parent cf8866d1ce
commit b7b0274a6e
3 changed files with 46 additions and 17 deletions
+16 -4
View File
@@ -10,6 +10,7 @@ use HttpServer\Route\Annotation\Tcp;
use HttpServer\Route\Annotation\Websocket;
use HttpServer\Route\Annotation\Websocket as AWebsocket;
use Snowflake\Event;
use Snowflake\Exception\ComponentException;
use Snowflake\Snowflake;
use Swoole\Coroutine;
use Swoole\Server;
@@ -32,12 +33,23 @@ class OnClose extends Callback
* @throws Exception
*/
public function onHandler(Server $server, int $fd)
{
Coroutine::defer(function () {
fire(Event::EVENT_AFTER_REQUEST);
});
$this->execute($server, $fd);
}
/**
* @param Server $server
* @param int $fd
* @throws ComponentException
* @throws Exception
*/
private function execute(Server $server, int $fd)
{
try {
$event = Snowflake::app()->getEvent();
Coroutine::defer(function () use ($event) {
$event->trigger(Event::EVENT_AFTER_REQUEST);
});
[$manager, $name] = $this->resolve($server, $fd);
if (empty($manager) || !$manager->has($name)) {
return;
+15 -3
View File
@@ -76,11 +76,23 @@ class OnHandshake extends Callback
* @throws Exception
*/
public function onHandler(SRequest $request, SResponse $response)
{
Coroutine::defer(function () {
fire(Event::EVENT_AFTER_REQUEST);
});
$this->execute($request, $response);
}
/**
* @param SRequest $request
* @param SResponse $response
* @return mixed|bool|null
* @throws ComponentException
*/
private function execute(SRequest $request, SResponse $response)
{
try {
Coroutine::defer(function () {
fire(Event::EVENT_AFTER_REQUEST);
});
$this->resolveParse($request, $response);
$manager = Snowflake::app()->annotation->websocket;
+15 -10
View File
@@ -14,6 +14,7 @@ use HttpServer\Service\Http;
use Snowflake\Abstracts\Config;
use Snowflake\Core\JSON;
use Snowflake\Event;
use Snowflake\Exception\ComponentException;
use Snowflake\Snowflake;
use Swoole\Coroutine;
use Swoole\Error;
@@ -35,9 +36,22 @@ class OnRequest extends Callback
* @throws Exception
*/
public function onHandler(Request $request, Response $response)
{
Coroutine::defer(function () {
fire(Event::EVENT_AFTER_REQUEST);
});
$this->onRequest($request, $response);
}
/**
* @param Request $request
* @param Response $response
* @throws Exception
*/
public function onRequest(Request $request, Response $response)
{
try {
Coroutine::defer([$this, 'onDefer']);
/** @var HRequest $sRequest */
[$sRequest, $sResponse] = [HRequest::create($request), HResponse::create($response)];
if ($sRequest->is('favicon.ico')) {
@@ -51,15 +65,6 @@ class OnRequest extends Callback
}
/**
* @throws \Snowflake\Exception\ComponentException
*/
public function onDefer()
{
fire(Event::EVENT_AFTER_REQUEST);
}
/**
* @param $response
* @throws Exception