server = $server; } /** * Обработка события подключения страницы * @param array $params параметры подключения * @param integer $connectionID ID страницы Server */ abstract public function onConnect($params, $connectionID); /** * Обработка события отключения страницы * @param array $params параметры подключения * @param integer $connectionID ID страницы (Server) */ abstract public function onClose($params, $connectionID); /** * Обработка события получения сообщения от страницы * @param array $data полученные данные [action] * @param array $params параметры подключения * @param integer $connectionID ID страницы (Server) */ public function onMessage($data, $params, $connectionID) { if (empty($data['action'])) { return; } $action = $data['action']; if (! method_exists($this, $action)) { $this->log('Action does not exist: ' . $action, [ 'function' => __FUNCTION__, ]); return; } # обработаем сообщение $this->$action($data, $params, $connectionID); } /** * Отправка внутреннего сообщения * @param string $action название события * @param array $data данные */ public static function sendInner($action, $data) { $data['module'] = static::MODULE; $data['method'] = static::METHOD; $data['action'] = 'inner_' . $action; Server::sendInner($data); } /** * Обработка внутреннего сообщения * @param array $data полученные данные [action, ...] */ public function onInnerMessage(array $data) { if (empty($data['action'])) { return; } $action = $data['action']; if (! method_exists($this, $action)) { $this->log('Action does not exist: ' . $action, [ 'function' => __FUNCTION__, ]); return; } # обработаем сообщение $this->$action($data); } /** * Сохранение сообщения в лог файл * @param string|array $message * @param array $context * @param mixed $to * @return void */ public function log($message, $context = [], $to = null) { $context['class'] = get_class($this); parent::log($message, $context, $to ?? 'websockets.log'); } }