opcode != 0x08) { $event = Snowflake::app()->getEvent(); Coroutine::defer(function () use ($event) { var_dump('Event::EVENT_AFTER_REQUEST'); $event->trigger(Event::EVENT_AFTER_REQUEST); }); $content = $this->resolve($event, $frame, $server); if (!empty($content)) { $server->send($frame->fd, $content); } } } catch (\Throwable $exception) { $this->addError($exception->getMessage(), 'websocket'); $server->send($frame->fd, $exception->getMessage()); } finally { logger()->insert(); } } /** * @param $event * @param $frame * @param $server * @return mixed * @throws Exception */ private function resolve($event, $frame, $server): mixed { if ($event->exists(Event::SERVER_MESSAGE)) { $event->trigger(Event::SERVER_MESSAGE, [$server, $frame]); } else { $frame->data = json_decode($frame->data, true); } if (empty($route = $frame->data['route'] ?? null)) { throw new Exception('Format error.'); } $router = Snowflake::app()->getRouter(); $node = $router->search('/' . Socket::MESSAGE . '::' . $route, 'sw::socket'); if ($node === null) { throw new Exception('Page not found.'); } return $node->dispatch($frame, $server); } }