opcode == 0x08) { return; } $event = Snowflake::app()->getEvent(); Coroutine::defer(function () use ($event) { $event->trigger(Event::EVENT_AFTER_REQUEST); }); $this->resolve($event, $frame, $server); $manager = Snowflake::app()->getAnnotation()->websocket; $manager->runWith($this->name($manager, $frame), [$frame, $server]); } catch (\Throwable $exception) { $this->addError($exception->getMessage(), 'websocket'); $server->send($frame->fd, $exception->getMessage()); } finally { logger()->insert(); } } /** * @param $event * @param $frame * @param $server * @throws Exception */ private function resolve($event, $frame, $server) { if ($event->exists(Event::SERVER_MESSAGE)) { $event->trigger(Event::SERVER_MESSAGE, [$server, $frame]); } else { $frame->data = json_decode($frame->data, true); } if (!isset($frame->data['route'])) { throw new Exception('Format error.'); } } /** * @param $manager * @param $frame * @return mixed */ private function name($manager, $frame) { return $manager->getName(AWebsocket::MESSAGE, [null, null, $frame->data['route']]); } }