以下のコードを使用してメッセージを送信します。
// Assume we've created an XMPPConnection name "connection".
ChatManager chatmanager = connection.getChatManager();
Chat newChat = chatmanager.createChat("jsmith@jivesoftware.com", new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println("Received message: " + message);
}
});
try {
newChat.sendMessage("Howdy!");
}
catch (XMPPException e) {
System.out.println("Error Delivering block");
}
以下は、JabberIDに送信されたメッセージを非同期で受信するためのものです。
// Create a packet filter to listen for new messages from a particular
// user. We use an AndFilter to combine two other filters.
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class),
new FromContainsFilter("mary@jivesoftware.com"));
// Assume we've created an XMPPConnection name "connection".
// First, register a packet collector using the filter we created.
PacketCollector myCollector = connection.createPacketCollector(filter);
// Normally, you'd do something with the collector, like wait for new packets.
// Next, create a packet listener. We use an anonymous inner class for brevity.
PacketListener myListener = new PacketListener() {
public void processPacket(Packet packet) {
// Do something with the incoming packet here.
}
};
// Register the listener.
connection.addPacketListener(myListener, filter);
メッセージの送信は問題ありません。
しかし、別のJabberIDからメッセージを受信することは、そのJabberIDにメッセージを送信するまで達成されません。
その後、私はそれによって送信されたメッセージを適切に受信します。
リストにないjabberIDからメッセージを受信する必要がある場合が多く、チャットを開始する側がアプリケーションではない場合が多いことに注意してください。
上位のコードはスマックサンプルですが、PacketListener実装をインラインで作成しないことを除いて、私のコードは完全に同じです。