-1

さまざまなリソースから変更されたプレゼンスを表示できる Packetlistener があります。プレゼンスが他のリソースから変更されるたびに、受信したプレゼンス パケットを 1 回だけ再送信する必要があります。ただし、継続的にパケットを送信し続けます。

        connection.addPacketListener(new PacketListener(){

        @Override
        public void processPacket(Packet presencePkt) {
             pres= ((Presence) presencePkt);

        switch(pres.getMode()){
            case available: 
                connection.sendPacket(pres);
            break;
            case dnd: 
                connection.sendPacket(pres);
            break;

            default :
                break;

        }


    }

}, new PacketTypeFilter(Presence.class));
4

1 に答える 1

1

私があなたのコードを正しく解釈した場合、あなたはプレゼンスパケットをそのまま再送信するだけなので、パケットを自分自身に直接送信し直します。あなたはその再送されたパケットを受け取り、それがあなたによってすでに再送されていることを知らず、それを再送信します。

本当にパケットを自分自身に1回だけ再送信したい場合は、再送信する前にIDを割り当てることをお勧めします。

于 2013-02-15T08:22:29.140 に答える