Ejemplo n.º 1
0
  /**
   * Routes the Presence packet.
   *
   * @param packet the packet to route
   */
  public void route(Presence packet) {
    if (packet == null) {
      throw new NullPointerException();
    }
    // 根据发送包的jid查询建立连接的会话(session)
    ClientSession session = sessionManager.getSession(packet.getFrom());

    // 当没有建立连接且状态为非连接状态,进行Presence包处理
    if (session == null || session.getStatus() != Session.STATUS_CONNECTED) {
      handle(packet);
    } else {
      // 返回未授权错误
      packet.setTo(session.getAddress());
      packet.setFrom((JID) null);
      packet.setError(PacketError.Condition.not_authorized);
      session.process(packet);
    }
  }