我閱讀了一些例子並測試了它們,但是他們都需要先與某人開始聊天以接收傳入消息......我想要檢索此傳入消息,而無需先與jid交談,任何人都可以舉個例子嗎?如何使用Smack接收傳入的XMPP消息?
23
A
回答
29
您需要註冊一個ChatListener通知新的聊天記錄,那麼你可以添加一個消息監聽器,他們像正常:
connection.getChatManager().addChatListener(new ChatManagerListenerImpl());
....
private class ChatManagerListenerImpl implements ChatManagerListener {
/** {@inheritDoc} */
@Override
public void chatCreated(final Chat chat, final boolean createdLocally) {
chat.addMessageListener(...);
}
}
15
我只是想添加複製&粘貼示例:
// connect to server
XMPPConnection connection = new XMPPConnection("jabber.org");
connection.connect();
connection.login("user", "password"); // TODO: change user and pass
// register listeners
ChatManager chatmanager = connection.getChatManager();
connection.getChatManager().addChatListener(new ChatManagerListener()
{
public void chatCreated(final Chat chat, final boolean createdLocally)
{
chat.addMessageListener(new MessageListener()
{
public void processMessage(Chat chat, Message message)
{
System.out.println("Received message: "
+ (message != null ? message.getBody() : "NULL"));
}
});
}
});
// idle for 20 seconds
final long start = System.nanoTime();
while ((System.nanoTime() - start)/1000000 < 20000) // do for 20 seconds
{
Thread.sleep(500);
}
connection.disconnect();
本示例連接到jabber.org並在控制檯上顯示每條收到的消息。
9
請找到下面的代碼。
請smack.jar & smackx.jar添加到您的構建路徑
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
public class GoogleTalkDemo extends Thread{
private XMPPConnection xmppConnection;
public void connect(String server, int port, String s) throws Exception {
xmppConnection = new XMPPConnection(new ConnectionConfiguration(server, port,s));
xmppConnection.connect();
}
public void disconnect(){
if(xmppConnection != null){
xmppConnection.disconnect();
interrupt();
}
}
public void login(String username, String password) throws Exception{
connect("talk.google.com", 5222, "gmail.com");
xmppConnection.login(username, password);
}
public void run(){
try {
login("[email protected]", "your password");
System.out.println("Login successful");
listeningForMessages();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String args[]) throws Exception {
GoogleTalkDemo gtd = new GoogleTalkDemo();
gtd.run();
}
public void listeningForMessages() {
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class));
PacketCollector collector = xmppConnection.createPacketCollector(filter);
while (true) {
Packet packet = collector.nextResult();
if (packet instanceof Message) {
Message message = (Message) packet;
if (message != null && message.getBody() != null)
System.out.println("Received message from "
+ packet.getFrom() + " : "
+ (message != null ? message.getBody() : "NULL"));
}
}
}
}
3
private MultiUserChat muc; /* Initialize muc */
private void listeningForMessages()
{
muc.addMessageListener(new PacketListener() {
public void processPacket(Packet packet)
{
final Message message = (Message) packet;
// Do your action with the message
}
});
}
相關問題
- 1. XMPP Smack無法收到消息
- 2. 收到消息時通知XMPP + Smack
- 3. 如何在ios中使用XMPP接收脫機消息
- 4. 如何使用samck API接收聊天室消息,XMPP
- 5. smack使用4.1.0 rc1接收消息muc使用4.1.0 rc1
- 6. 使用Smack Api發送和接收消息Android的
- 7. 不能夠使用smack接收羣組消息
- 8. 如何從node-xmpp中的ejabberd接收消息?
- 9. Smack XMPP android連接崩潰
- 10. 重新連接Smack後無法接收消息
- 11. 使用XMPP處理傳入消息的最佳方式
- 12. Xamarin形式android使用廣播接收器接收傳入的文本消息
- 13. xmpp pubsub不傳遞消息
- 14. 如何使用Smack XMPP庫創建SSL連接?
- 15. 在純XMPP上使用Apache ActiveMQ + XMPP進行消息傳遞
- 16. smack xmpp庫Java
- 17. xmpp在Android應用程序中發送和接收消息
- 18. XMPP SMACK文件接收不能在Android上工作
- 19. XMPP聊天發送/接收的消息同步
- 20. Robbiehanson xmpp框架的iOS不接收聊天消息
- 21. 顯示/解碼接收到的聊天消息XMPP框架ios
- 22. 如何在用戶輸入消息時從其他用戶接收消息?
- 23. JavaFX使用Smack API從Java回調(xmpp)
- 24. 使用authToken驗證Google Talk(XMPP,Smack)
- 25. 使用Twilio接收雙向SMS消息和使用出站消息鏈接入站消息
- 26. android如何使用xmpp-smack在羣聊中發送和接收圖像和位置(使用地圖)
- 27. 服務不適用於接收傳入消息
- 28. 如何使用java中的Smack XMPP庫處理TLS證書
- 29. 如何使用Smack XMPP API處理(失敗的)登錄嘗試
- 30. FCM遷移後無法接收XMPP上游消息
你是什麼服務器? – 2016-04-26 13:24:49