Beispiel #1
0
 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;
 }
Beispiel #2
0
 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";
     }
 }