我已成功連接到XMPP服務器(來自android XMPP客戶端),並且可以向用戶發送消息,但無法接收來自同一用戶的響應。XMPP無法設置偵聽器
我發送消息是這樣的:
public void send_message(String message, String buddy) throws XMPPException {
buddy += "@localhost";
/* send message to user */
Log.w("Sending mesage " + message + " to user " + buddy, "0");
chat = chatManager.createChat(buddy, messageListener);
chat.sendMessage(message);
}
我傳遞的消息監聽到createChat功能。該消息監聽的類是:
class XMPPMessageListener implements MessageListener {
private String from;
private String body;
public void processMessage(Chat chat, Message message) {
this.from = message.getFrom();
this.body = message.getBody();
Log.w("*****Received message" + body + " from " + from, "0*****");
}
}
當發送消息給用戶,我發現了以下調試輸出:
W/Sending mesage play to user [email protected]( 823): 0
D/SMACK ( 823): 10:43:54 AM SENT (1156346368): <message id="vwaJX-15" to="[email protected]" from="[email protected]/Smack" type="chat"><body>test</body><thread>249ke0</thread></message>
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): <presence id="vwaJX-12" to="[email protected]/Smack" from="eleano" type="error"><error code="404" type="cancel"><remote-server-no
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): t-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence>
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): <presence id="vwaJX-14" to="[email protected]/Smack" from="test" type="error"><error code="404" type="cancel"><remote-server-not-
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence>
和消息「測試」顯示連接用戶測試(以這個案例)。我正在發送來自用戶eleano的消息。我們還可以看到屏幕上顯示了一個調試輸出「結束使用用戶測試@本地主機的消息」,這表明我的功能確實已成功調用。
在從測試收到消息eleano,我只得到這調試輸出:
D/SMACK ( 823): 10:44:00 AM RCV (1156346368): <message id="58Fjj-64" to="[email protected]/Smack" from="[email protected]/Spark 2.6.3" type="chat"><body>yes</body><thread>0tlK7o<
D/SMACK ( 823): 10:44:00 AM RCV (1156346368): /thread><x xmlns="jabber:x:event"><offline/><composing/></x></message>
但用戶eleano沒有收到該消息。我們也可以注意到沒有:
Log.w("*****Received message" + body + " from " + from, "0*****");
顯示在屏幕上,所以MessageListener永遠不會被調用。這是爲什麼?正如它在文檔中所說的那樣,我已經正確設置了它。
歡迎任何想法。謝謝。