public function dispatchReceivePacket(Packet $packet, Session $session) { if ($session->isAuth()) { return true; } /* @var \jegarn\session\SwooleSession $session * @var AuthPacket $pkt */ if ($pkt = AuthPacket::getPacketFromPacket($packet)) { if ($pkt->auth()) { $session->setUserId($pkt->getUid()); $session->setAuth(true); $session->setSessionId(TextUtil::generateGUID()); SessionManager::getInstance()->addSession($session); $pkt->setStatus(AuthPacket::STATUS_AUTH_SUCCESS); } else { $pkt->setStatus(AuthPacket::STATUS_AUTH_FAILED); Logger::addInfo('auth failed(fd:' . $session->getFd() . ')'); } } else { $pkt = new AuthPacket(); $pkt->setPacket($packet); $pkt->setStatus(AuthPacket::STATUS_NEED_AUTH); Logger::addInfo('auth needed(fd:' . $session->getFd() . ')'); } ServerManager::getInstance()->send($session, $pkt->getReversedPacket()); return false; }
protected function dealMessage($data) { echo "begin to deal message\n"; if ($data && ($result = ConvertUtil::unpack($data)) && isset($result['from']) && isset($result['to']) && isset($result['type']) && isset($result['content'])) { $this->sessionId = isset($result['session_id']) ? $result['session_id'] : null; /* @var Packet $packet * @var AuthPacket $authPacket */ $packet = Packet::getPacketFromArray($result); if (!$this->auth) { if ($authPacket = AuthPacket::getPacketFromPacket($packet)) { switch ($authPacket->getStatus()) { case AuthPacket::STATUS_NEED_AUTH: echo "[ERROR] need auth\n"; break; case AuthPacket::STATUS_AUTH_FAILED: echo "[ERROR] auth failed\n"; break; case AuthPacket::STATUS_AUTH_SUCCESS: echo "[SUCCESS] auth success\n"; $this->auth = true; $this->userId = $authPacket->getUid(); break; default: echo "[ERROR] auth status undefined!\n"; } } else { echo "[ERROR] first packet is not auth packet\n"; } } echo "---------RECEIVE----------------------------\n"; echo "from: ", $packet->getFrom(), "\n"; echo "to: ", $packet->getTo(), "\n"; echo "type: ", $packet->getType(), "\n"; echo "session: ", $this->sessionId, "\n"; echo "content: ", json_encode($packet->getContent(), JSON_UNESCAPED_UNICODE), "\n\n"; } else { echo "[ERROR] receive error\n"; } }