改名
This commit is contained in:
@@ -33,9 +33,15 @@ class OnClose extends Callback
|
||||
public function onHandler(Server $server, int $fd)
|
||||
{
|
||||
try {
|
||||
$this->execute($server, $fd);
|
||||
$clientInfo = $server->getClientInfo($fd);
|
||||
$event = Snowflake::app()->getEvent();
|
||||
|
||||
if (!$event->exists(($name = $this->getName($clientInfo)))) {
|
||||
return;
|
||||
}
|
||||
$event->trigger($name, [$fd, $server]);
|
||||
} catch (\Throwable $exception) {
|
||||
$this->addError($exception,'throwable');
|
||||
$this->addError($exception, 'throwable');
|
||||
} finally {
|
||||
fire(Event::SYSTEM_RESOURCE_RELEASES);
|
||||
logger()->insert();
|
||||
@@ -43,59 +49,13 @@ class OnClose extends Callback
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Server $server
|
||||
* @param int $fd
|
||||
* @throws ComponentException
|
||||
* @throws Exception
|
||||
*/
|
||||
private function execute(Server $server, int $fd): void
|
||||
{
|
||||
if (!$this->isWebsocket($server, $fd)) {
|
||||
$client = $server->getClientInfo($fd);
|
||||
fire($this->name($client['server_port']), [$server, $fd]);
|
||||
} else {
|
||||
$this->loadNode($server, $fd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $server_port
|
||||
* @return string
|
||||
*/
|
||||
private function name($server_port): string
|
||||
private function getName($server_port): string
|
||||
{
|
||||
return 'listen ' . $server_port . ' ' . Event::SERVER_CLIENT_CLOSE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $server
|
||||
* @param $fd
|
||||
* @return bool
|
||||
*/
|
||||
private function isWebsocket($server, $fd): bool
|
||||
{
|
||||
return $server instanceof WebsocketServer && $server->isEstablished($fd);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $server
|
||||
* @param $fd
|
||||
* @return mixed
|
||||
* @throws ComponentException
|
||||
* @throws ConfigException
|
||||
* @throws NotFindClassException
|
||||
* @throws Exception
|
||||
*/
|
||||
private function loadNode($server, $fd): mixed
|
||||
{
|
||||
$query = Request::socketQuery((object)['fd' => $fd], Socket::CLOSE);
|
||||
if (($node = router()->find_path($query)) !== null) {
|
||||
return $node->dispatch($server, $fd);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,9 +7,11 @@ namespace HttpServer\Events;
|
||||
use Annotation\Route\Socket;
|
||||
use Exception;
|
||||
use HttpServer\Abstracts\Callback;
|
||||
use HttpServer\Http\HttpHeaders;
|
||||
use HttpServer\Http\HttpParams;
|
||||
use HttpServer\Http\Request;
|
||||
use HttpServer\Http\Response;
|
||||
use Snowflake\Core\ArrayAccess;
|
||||
use Snowflake\Event;
|
||||
use Snowflake\Snowflake;
|
||||
use Swoole\Http\Request as SRequest;
|
||||
@@ -98,7 +100,7 @@ class OnHandshake extends Callback
|
||||
$eventName = 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_HANDSHAKE;
|
||||
$event->trigger($eventName, [$request, $response]);
|
||||
} catch (\Throwable $exception) {
|
||||
$this->addError($exception,'throwable');
|
||||
$this->addError($exception, 'throwable');
|
||||
$this->disconnect($response, 500);
|
||||
} finally {
|
||||
fire(Event::SYSTEM_RESOURCE_CLEAN);
|
||||
@@ -124,6 +126,9 @@ class OnHandshake extends Callback
|
||||
/** @var Request $sRequest */
|
||||
$sRequest = Request::create($request);
|
||||
$sRequest->uri = '/' . Socket::HANDSHAKE . '::event';
|
||||
|
||||
$sRequest->headers = new HttpHeaders(ArrayAccess::merge($request->server, $request->header));
|
||||
|
||||
$sRequest->headers->replace('request_method', 'sw::socket');
|
||||
$sRequest->headers->replace('request_uri', $sRequest->uri);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user