This commit is contained in:
2021-03-18 14:34:46 +08:00
parent fe1ffb960b
commit 65d6cd43fa
3 changed files with 38 additions and 30 deletions
+14 -9
View File
@@ -86,10 +86,23 @@ class OnHandshake extends Callback
*/ */
public function onHandler(SRequest $request, SResponse $response): void public function onHandler(SRequest $request, SResponse $response): void
{ {
try {
$this->execute($request, $response); $this->execute($request, $response);
fire(Event::SYSTEM_RESOURCE_RELEASES);
$clientInfo = Snowflake::getWebSocket()->getClientInfo($request->fd);
$event = Snowflake::app()->getEvent();
$eventName = 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_HANDSHAKE;
$event->trigger($eventName, [$request, $response]);
} catch (\Throwable $exception) {
$this->addError($exception);
$this->disconnect($response, 500);
} finally {
fire(Event::SYSTEM_RESOURCE_CLEAN);
logger()->insert(); logger()->insert();
} }
}
/** /**
@@ -100,7 +113,6 @@ class OnHandshake extends Callback
*/ */
private function execute(SRequest $request, SResponse $response): mixed private function execute(SRequest $request, SResponse $response): mixed
{ {
try {
$this->resolveParse($request, $response); $this->resolveParse($request, $response);
if (isset($request->get['debug']) && $request->get['debug'] == 'test') { if (isset($request->get['debug']) && $request->get['debug'] == 'test') {
return $this->connect($response, 101); return $this->connect($response, 101);
@@ -117,13 +129,6 @@ class OnHandshake extends Callback
return $this->disconnect($response, 502); return $this->disconnect($response, 502);
} }
return $node->dispatch($request, $response); return $node->dispatch($request, $response);
} catch (\Throwable $exception) {
$this->addError($exception);
return $this->disconnect($response, 500);
} finally {
fire(Event::SYSTEM_RESOURCE_CLEAN);
logger()->insert();
}
} }
+6 -3
View File
@@ -62,10 +62,13 @@ class OnMessage extends Callback
* @return mixed * @return mixed
* @throws Exception * @throws Exception
*/ */
private function resolve($event, Frame $frame, $server): mixed private function resolve($event, Frame $frame,Server $server): mixed
{ {
if ($event->exists(Event::SERVER_MESSAGE)) { $clientInfo = $server->getClientInfo($frame->fd);
$event->trigger(Event::SERVER_MESSAGE, [$server, $frame]);
$eventName = 'listen ' . $clientInfo['server_port'] . ' ' . Event::SERVER_MESSAGE;
if ($event->exists($eventName)) {
$event->trigger($eventName, [$server, $frame]);
} else { } else {
$frame->data = json_decode($frame->data, true); $frame->data = json_decode($frame->data, true);
} }
+1 -1
View File
@@ -59,7 +59,7 @@ class Redis extends Pool
{ {
$this->printClients($config['host'], $name, true); $this->printClients($config['host'], $name, true);
$redis = new SRedis(); $redis = new SRedis();
if (!$redis->connect($config['host'], (int)$config['port'], $config['timeout'])) { if (!$redis->pconnect($config['host'], (int)$config['port'], $config['timeout'])) {
throw new RedisConnectException(sprintf('The Redis Connect %s::%d Fail.', $config['host'], $config['port'])); throw new RedisConnectException(sprintf('The Redis Connect %s::%d Fail.', $config['host'], $config['port']));
} }
if (empty($config['auth']) || !$redis->auth($config['auth'])) { if (empty($config['auth']) || !$redis->auth($config['auth'])) {