Android基於XMPP Smack openfire 開發的聊天室(一)【會議服務、聊天室列表、加入】
廢話少說,公司沒事幹,組長叫我寫Demo,我狂暈....
先把先說說這個什麼聊天室吧,伺服器就別說了,典型的拿來主義。用的是成品的openfire。說道smack,這個是一個jar檔案,庫,是用在javae的。要想在android端使用這個,就要用到asmack包,這個可以在官網下。其實裡邊跟smack包沒什麼區別,具體差異目前我沒發現。
可能有的朋友說這個smack是什麼用的,我個人一句話,一個已經包裝了XMPP協議的架包。提供了API的操作...好了進入正題
1,首先想進入聊天室,那必須要先知道聊天室所在的會議服務(下圖,用spark截圖)
- /**
- * 初始化聊服務會議列表
- */
- private void initHostRoom() {
- Collection<HostedRoom> hostrooms;
- try {
- hostrooms = MultiUserChat.getHostedRooms(Constants.conn,
- Constants.conn.getServiceName());
- for (HostedRoom entry : hostrooms) {
- roominfos.add(entry);
- Log.i(TAG, "名字:" + entry.getName() + " - ID:" + entry.getJid());
- }
- Log.i(TAG, "服務會議數量:" + roominfos.size());
- } catch (XMPPException e) {
- e.printStackTrace();
- }
- }
2,獲取了那個服務的JID後才能進入會議列表:
- /**
- * 初始化房間列表
- */
- public void init() {
- listDiscoverItems = new ArrayList<DiscoverItems.Item>();
- // 獲得與XMPPConnection相關的ServiceDiscoveryManager
- ServiceDiscoveryManager discoManager = ServiceDiscoveryManager
- .getInstanceFor(Constants.conn);
- // 獲得指定XMPP實體的專案
- // 這個例子獲得與線上目錄服務相關的專案
- DiscoverItems discoItems;
- try {
- discoItems = discoManager.discoverItems(jid);
- // 獲得被查詢的XMPP實體的要檢視的專案
- Iterator it = discoItems.getItems();
- // 顯示遠端XMPP實體的專案
- while (it.hasNext()) {
- DiscoverItems.Item item = (DiscoverItems.Item) it.next();
- System.out.println(item.getEntityID());
- System.out.println(item.getName());
- listDiscoverItems.add(item);
- }
- } catch (XMPPException e) {
- e.printStackTrace();
- }
- }
3,同樣,要進入會議房間(聊天室)也要獲取它的ID,才能進入
- // 後面服務名稱必需是建立房間的那個服務
- jid = getIntent().getStringExtra("jid");
- try {
- muc = new MultiUserChat(Constants.conn, jid);
- // 建立聊天室,進入房間後的nickname(暱稱)
- muc.join("痞子測試");
- Log.v(TAG, "join success");
- } catch (XMPPException e) {
- e.printStackTrace();
- }
簡單吧!
好了,這一篇就到這裡,下一篇是聊天室內部的一些處理。
相關文章
- Android基於XMPP Smack openfire 開發的聊天室(六) 【加入房間、許可權錯誤】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(二) 【聊天資訊、成員】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(三) 【新舊記錄、踢人】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(五) 【邀請、被邀請】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(四) 【建立房間、表單;報文】AndroidMac
- Android基於XMPP Smack openfire 開發的聊天室(七) 【成員狀態、自身狀態】AndroidMac
- 基於xmpp openfire smack開發之openfire介紹和部署[1]Mac
- 基於xmpp openfire smack開發之Android客戶端開發[3]MacAndroid客戶端
- 基於xmpp openfire smack開發之smack類庫介紹和使用[2]Mac
- 基於xmpp openfire smack開發之Android訊息推送技術原理分析和實踐[4]MacAndroid
- android基於openfire+smack開發之【架構瞭解】AndroidMac架構
- Android平臺下基於XMPP的IM研究(二 MultiUserChat 聊天室)Android
- 基於 golang + vue + websocket 開發的聊天室GolangVueWeb
- 聊天室應用開發實踐(二):實現基於 Web 的聊天室Web
- 基於XMPP協議(openfire伺服器)的訊息推送實現協議伺服器
- 15.基於UDP協議的聊天室程式UDP協議
- 基於golang的聊天室Golang
- 基於XMPP協議開發Android即時通訊軟體協議Android
- 基於netty的聊天室Netty
- 基於XMPP協議的Android即時通訊系協議Android
- Apache MiNa + smack +openfilre 實現多人聊天室ApacheMac
- Smack 4.1.0-beta1 釋出,XMPP 開發包Mac
- 基於LINUX的多功能聊天室Linux
- 基於XMPP協議Android即時通訊開源應用協議Android
- 聊天室應用開發實踐(一)
- Android之基於XMPP協議即時通訊軟體(一)Android協議
- 基於SpringBoot+STOMP協議實現的web聊天室Spring Boot協議Web
- C++ 實現基於TCP的聊天室C++TCP
- 如何快速開發 Web 聊天室Web
- zphp,swoole開發chat聊天室PHP
- 求救:開發jsp聊天室!JS
- android socket聊天室——也不僅僅是聊天室Android
- 基於 flask 結合 Redis 的簡單聊天室FlaskRedis
- 基於Openfire Smack開發即時通訊應用、Spark安裝,註冊,登入,退出登入(二)MacSpark
- Android平臺下基於XMPP的IM研究(一)Android
- iOS實現XMPP通訊(一)搭建OpenfireiOS
- WEB例項:開發一個聊天室應用Web
- Node + WebSocket + Vue 聊天室建立群聊/加入群聊WebVue