This commit is contained in:
2021-03-08 18:40:42 +08:00
parent e1dd10e210
commit b2693aa005
5 changed files with 23 additions and 17 deletions
+13 -14
View File
@@ -32,8 +32,14 @@ class OnClose extends Callback
*/
public function onHandler(Server $server, int $fd)
{
$this->execute($server, $fd);
fire(Event::SYSTEM_RESOURCE_RELEASES);
try {
$this->execute($server, $fd);
} catch (\Throwable $exception) {
$this->addError($exception);
} finally {
fire(Event::SYSTEM_RESOURCE_RELEASES);
logger()->insert();
}
}
@@ -45,18 +51,11 @@ class OnClose extends Callback
*/
private function execute(Server $server, int $fd): void
{
try {
if (!$this->isWebsocket($server, $fd)) {
$client = $server->getClientInfo($fd);
fire($this->name($client['server_port']), [$server, $fd]);
} else {
$this->loadNode($server, $fd);
}
} catch (\Throwable $exception) {
$this->addError($exception);
} finally {
fire(Event::SYSTEM_RESOURCE_RELEASES);
logger()->insert();
if (!$this->isWebsocket($server, $fd)) {
$client = $server->getClientInfo($fd);
fire($this->name($client['server_port']), [$server, $fd]);
} else {
$this->loadNode($server, $fd);
}
}
+6 -2
View File
@@ -30,9 +30,13 @@ class OnConnect extends Callback
$clientInfo = $server->getClientInfo($fd);
$name = 'listen ' . $clientInfo['server_port'] . ' ' . Event::RECEIVE_CONNECTION;
try {
$name = 'listen ' . $clientInfo['server_port'] . ' ' . Event::RECEIVE_CONNECTION;
$event->trigger($name, [$server, $fd, $reactorId]);
$event->trigger($name, [$server, $fd, $reactorId]);
} catch (\Throwable $throwable) {
$this->addError($throwable, 'connect');
}
fire(Event::SYSTEM_RESOURCE_RELEASES);
logger()->insert();
+2
View File
@@ -50,6 +50,8 @@ class OnPacket extends Callback
return $server->sendto($host, $port, $dispatch);
} catch (\Throwable $exception) {
$this->addError($exception, 'packet');
$response = Json::encode(['state' => 500, 'message' => $exception->getMessage()]);
return $server->sendto($clientInfo['address'], $clientInfo['port'], $response);
+2
View File
@@ -48,6 +48,8 @@ class OnReceive extends Callback
return $server->send($fd, $dispatch);
} catch (\Throwable $exception) {
$this->addError($exception, 'receive');
return $server->send($fd, Json::encode(['state' => 500, 'message' => $exception->getMessage()]));
} finally {
$event = Snowflake::app()->getEvent();
-1
View File
@@ -288,7 +288,6 @@ abstract class Pool extends Component
$this->pop($channel, $name, 0);
if ($this->creates > -1) {
Timer::clear($this->creates);
$this->debug('clean timer.');
}
$this->_items[$name] = null;
}