smack和openfire通訊的簡單例子
smack是什麼?具體百度一下。我的理解也不深,我理解其實就是XMPP協議的實現。都是浮雲,一切都是工具。
首先還是下載smack,我下載的是smack_3_2_0.tar。這個包裡有四個jar檔案。
首先建立一個java工程。建立一個lib資料夾,把這四個jar包放到lib中,新增到編譯路徑中。
目錄介面如下:
怎麼圖片還還沒傳上來。哎。
建立一個TestSmack.java類。具體程式碼如下:
package org.yangzc.smack;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
public class TestSmack {
public static void main(String[] args) throws XMPPException {
ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1", 5222);
XMPPConnection connection = new XMPPConnection(config);
XMPPConnection.DEBUG_ENABLED = true;
connection.connect();
connection.login("admin", "admin");
// ChatManager chatManager = connection.getChatManager();
// chatManager.addChatListener(new ChatManagerListener(){
// @Override
// public void chatCreated(Chat chat, boolean arg1) {
// chat.addMessageListener(new MessageListener(){
// @Override
// public void processMessage(Chat arg0, Message arg1) {
// System.out.println(arg1.getBody());
// }
// });
//
// }
// });
connection.addPacketListener(new PacketListener(){
@Override
public void processPacket(Packet arg0) {
System.out.println(arg0);
}
}, new PacketFilter(){
@Override
public boolean accept(Packet arg0) {
return true;
}
});
IQ iq = new IQ(){
@Override
public String getChildElementXML() {
StringBuilder buf = new StringBuilder();
buf.append("<query xmlns=\"com:im:group\"/>");
return buf.toString();
}
};
connection.sendPacket(iq);
// Chat chat = chatManager.createChat("yangzc", new MessageListener(){
// @Override
// public void processMessage(Chat arg0, Message arg1) {
// System.out.println(arg1.getBody());
// }
// });
// chat.sendMessage("hello World!!!");
// BufferedReader cmdIn = new BufferedReader(new InputStreamReader(System.in));
// for(;;) {
// try {
// String cmd = cmdIn.readLine();
// if("!q".equalsIgnoreCase(cmd)) {
// break;
// }
// chat.sendMessage(cmd);
// }catch(Exception ex) {
// }
// }
connection.disconnect();
System.exit(0);
}
}
測試:啟動openfire服務端,新增外掛到openfire中。執行這個例子。可以看到,smack和openfire的外掛通訊成功。
總結:
這裡比較關鍵的一句話時是:buf.append("<query xmlns=\"com:im:group\"/>");這句話指定了這個訊息是發動到那個名稱空間中。
只有傳送到openfire外掛對應的名稱空間中openfire外掛才可以正確接收。
當初在這裡費了好大的功夫。至此openfire外掛和smack的通訊實現算是告一段落。剩下的工作就是xml了,不用說了吧,很簡單的。
明天寫什麼呢?應該在研究一下androidpn。簡單看了一眼,好像是android領域的伺服器推送。推動就那些吧,推推拉拉的。
相關文章
- 即時通訊軟體openfire+spark+smackSparkMac
- 一個簡單的netty通訊的例子Netty
- 基於xmpp openfire smack開發之openfire介紹和部署[1]Mac
- 基於xmpp openfire smack開發之smack類庫介紹和使用[2]Mac
- 簡單區分WiFi通訊和WLAN通訊WiFi
- 簡單的Socket通訊
- 基於Openfire Smack開發即時通訊應用、Spark安裝,註冊,登入,退出登入(二)MacSpark
- 基於xmpp openfire smack開發之Android訊息推送技術原理分析和實踐[4]MacAndroid
- WebRTC:一個視訊聊天的簡單例子Web單例
- socket 完成簡單的通訊
- iOS實現XMPP通訊(一)搭建OpenfireiOS
- 網路通訊2:TCP簡單通訊TCP
- XPATH的簡單例子單例
- 簡單通訊錄的實現
- Android基於XMPP Smack openfire 開發的聊天室(四) 【建立房間、表單;報文】AndroidMac
- SwiftNIO初探-簡單UDP通訊SwiftUDP
- Java的Socket通訊簡單例項Java單例
- 簡單的區域網內通訊
- Websocket簡單例子Web單例
- JNI 簡單例子單例
- HttpClient 簡單例子HTTPclient單例
- TensorFlow 的簡單例子單例
- android基於openfire+smack開發之【架構瞭解】AndroidMac架構
- 一段最簡單的使用socket.io進行伺服器和客戶端通訊的例子程式碼伺服器客戶端
- 通過一個簡單的例子,瞭解 Cypress 的執行原理
- AgileEAS.NET SOA 中介軟體平臺.Net Socket通訊框架-簡單例子-實現簡單的服務端客戶端訊息應答框架單例服務端客戶端
- Spark Stream 簡單例子Spark單例
- TCP和UDP實現簡單一對一通訊TCPUDP
- 採用管道進行通訊的例子
- 智慧家居簡單實現---使用ESP8266簡單實現和APP通訊APP
- 一個簡單混合協議通訊列子,物聯網和網際網路通訊。協議
- Android基於XMPP Smack openfire 開發的聊天室(二) 【聊天資訊、成員】AndroidMac
- 基於xmpp openfire smack開發之Android客戶端開發[3]MacAndroid客戶端
- c#實現最簡單的socket通訊C#
- 物聯網通訊與普通簡訊通訊的區別和要注意的地方
- smartroute簡單整合叢集聊天通訊
- 擼一個簡單的MVVM例子MVVM
- UTL_FILE包的簡單例子單例