2017-03-01 5 views
2

私は、サーバー側をOpenFire 3.9.3、クライアントをSmack 4.2として使用してチャットアプリケーションを開発しています。Smackの再接続後にメッセージを受け取ることができません

私の質問:

  1. ユーザーはWIFI /モバイルデータをオフにした場合、再接続アクションが発生します。それはいいです。しかし、OpenFireセッションでは、クライアントの再接続中にオンラインとして表示されます。それは正常な行動ですか?

  2. user1がプロセスに再接続しているときに、user2がuser1にメッセージを送信し、再接続が成功した後でuser1にメッセージが配信されない場合は、これらのメッセージを取得する方法はありますか?

    再接続処理時間はOpenFireでオンラインとみなされるため、これらのメッセージはオフラインマネージャに保存されません。

    Smackを再接続した後でメッセージを受け取るためのアイディアを私に提供してください。

+0

openfireサーバーでログ記録とアーカイブ設定を有効にしましたか? – OlaB

+0

返信いただきありがとうございます。私はサーバー側でそれらのメッセージを見ることができました。しかし、どのようにクライアント側から取得する。どれが提供されなかったかをどのように異ならせるか。 – Manikandan

+0

だから私は、あなたがログイン後に接続機能を設定する方法のインスタンスを与えるだろう – OlaB

答えて

0

これは、私はあなたがログインした後にリスナーを設定することができますどのように上記製のコメントです:あなたはログインリスナーまたはしかしあなたがログイン中の後に、このようなメソッドを置く場合、あなた

public void setConnection() { 
     if (connection != null) { 
      // Add a packet listener to get messages sent to us 
      PacketFilter filter = new MessageTypeFilter(Message.Type.chat); 
      connection.addPacketListener(new PacketListener() { 
       @Override 
       public void processPacket(Packet packet) { 
        Message m = (Message) packet; 
        if (m.getBody() != null) { 
         String fromName = StringUtils.parseBareAddress(m 
           .getFrom()); 

         logs.append("\n"); 
         logs.append(fromName + ": " + m.getBody()); 
         logs.append("\n"); 

        } 
       } 
      }, filter); 
     } 

    } 

すべてのオフラインメッセージを取得します。

+0

また、Openfire Server>サーバー設定>オフラインメッセージをチェックして、設定が良好かどうかを確認してください。 – OlaB

+0

stanzalistenerはログイン後にのみ実装されています。サーバー側ではofflineManagerが正常に機能します。正常に再接続した後、私はオフラインマネージャーと呼ばれました。リストをゼロに戻しました。パケットリスナーは、受信者の再接続中にメッセージを送信したメッセージを返しません。例:user1がプロセス2の再接続中にuser2の間にメッセージを送信しました.. – Manikandan

+0

あなたにも質問がありますが、状況が正常である(つまりネットワーク再接続していない)ときにオフラインメッセージが表示されますか?あなたがネットワークの問題を話しているなら、私があなたが言及した設定を超えていると推測し、ログインの代わりに接続アクションでスタンザを設定してみてください。 – OlaB

関連する問題