項目須要簡單搭建openfire/spark/asmack的環境及程序demo,本文簡單記錄以避免遺忘。java
一、openfire/spark 是java編寫的xmpp服務器及PC客戶端,安裝過程至關簡單一直next;須要注意的是openfire中配置的域名,後續會做爲客戶端接入的地址,能夠配置成你的局域網IP。android
二、asmack是android下的smack報,即一個XMPP協議棧的客戶端版本,記錄以下:服務器
con = new XMPPConnection("192.168.0.28"); con.connect();
註冊完成並登錄後會在openfire的管理後臺看見該用戶信息以及登錄狀況。異步
con.login(account, password);
Packet的接受有同步和異步兩種,以下:spa
// 建立一個packet過濾器來監聽來自一個特定用戶的新的消息 //咱們可使用一個AndFilter來結合其它兩個過濾器。 PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class), new FromContainsFilter("mary@jivesoftware.com")); // 假設咱們已經建立了一個名爲"connection"的XMPPConnection。 // 首先,用咱們建立的過濾器註冊一個packet收集器。 PacketCollector myCollector = connection.createPacketCollector(filter); // 一般,您應該用收集器來些什麼,像等待新的packet。 // 接下來,建立一個packet監聽器。咱們能夠簡便地使用匿名內部類。 PacketListener myListener = new PacketListener() { public void processPacket(Packet packet) { // 在這裏用收到的packet作些什麼。 } }; // 註冊這個監聽器。 connection.addPacketListener(myListener, filter);
List<RosterEntry> entries = new ArrayList<RosterEntry>(); RosterGroup rosgrou = con.getRoster().getGroup(group); Collection<RosterEntry> roscol = rosgrou.getEntries(); Iterator<RosterEntry> iter = roscol.iterator(); while (iter.hasNext()) { entries.add(iter.next()); } return entries;
Chat newChat = connection.createChat("jsmith@jivesoftware.com"); Message newMessage = newChat.createMessage(); newMessage.setBody("Howdy!"); message.setProperty("favoriteColor", "red"); newChat.sendMessage(newMessage);