logger = $logger; } /** * JSON-RPC 异常处理. * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function handle(Throwable $throwable, ResponseInterface $response): MessageInterface|\Psr\Http\Message\ResponseInterface|ResponseInterface { $responseContents = $response->getBody()->getContents(); $responseContents = json_decode($responseContents, true); if (! empty($responseContents['error'])) { $this->logger->error($responseContents['error']); $port = null; $config = ApplicationContext::getContainer()->get(ConfigInterface::class); $servers = $config->get('server.servers'); foreach ($servers as $k => $server) { if ($server['name'] == 'jsonrpc-http') { $port = $server['port']; break; } } $responseContents['error']['message'] .= " - {$config->get('app_name')}:{$port}"; } $data = json_encode($responseContents, JSON_UNESCAPED_UNICODE); return $response->withStatus(200)->withBody(new SwooleStream($data)); } public function isValid(Throwable $throwable): bool { return true; } }