quickblox を使用してチャットを開発していますが、新しいチャットを開くときに問題が発生します。突然、私が切断されたときに他のユーザーが私に送信したすべてのメッセージを受信しました. 問題は、ユーザー A とチャットを開始すると、ユーザー A のチャット ルームでユーザー B、C、D からのチャットを受信することです。
Aユーザーのみを表示する方法を見つけました。しかし、問題は、サーバーがすでに「切断された」メッセージを私に送信していることです。そのため、ユーザー B が私に送信したメッセージが配信された (そして省略された) ため、BI とのチャットを開始してもテキストを受信しません。ユーザーAとチャットしていました。
保留中のメッセージ (一種の履歴) を受信したり、ログインしているチャットのメッセージを取得するにはどうすればよいですか?
私のコードの一部:
// Create Connection.
Connection.DEBUG_ENABLED = true;
config = new ConnectionConfiguration(CHAT_SERVER);
connection = new XMPPConnection(config);
try {
connection.connect();
connection.login(chatLogin, password);
// Create Chat Manager.
chatManager = connection.getChatManager();
// Create Chat.
chat = chatManager.createChat(friendLogin, null);
// // Set listener for outcoming messages.
// chatManager.addChatListener(chatManagerListener);
// Accept only messages from
String from_messages = Integer.toString(receiver_chat_id);
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class),
new FromContainsFilter(from_messages+"-3758@chat.quickblox.com"));
// Collect these messages
PacketCollector collector = connection.createPacketCollector(filter);
Packet packet = collector.pollResult();
PacketListener myListener = new PacketListener() {
public void processPacket(Packet packet) {
if (packet instanceof Message) {
Message msg = (Message) packet;
if(msg!=null){
// Process message
System.out.println("Rebem missatge: " +msg.getBody());
}
}
}
};
// Register the listener.
connection.addPacketListener(myListener, filter);
// Set listener for detect Receiver Status
if (connection.isConnected()){
roster = connection.getRoster();
roster.addRosterListener(new RosterListener() {
public void entriesDeleted(Collection<String> addresses) {}
public void entriesUpdated(Collection<String> addresses) {}
public void presenceChanged(Presence presence) {}
public void entriesAdded(Collection<String> arg0) {}
});
}