Android IM實踐,androidim實踐

來源:互聯網
上載者:User

Android IM實踐,androidim實踐

IM(Instant Messaging)在Android中可謂運用廣泛。QQ,Wechat,陌陌等應用都可以看作IM即時通訊APP,即時通訊在社交類APP中運用範圍較廣,其功能看起來也是比較cool的。今天我們將研究一下android IM軟體是如何?的。像IM這種實施通訊軟體,除非公司有比較大的實力和精力,才會自己去整這麼一套架構。對於廣大中小軟體開發人員來說,想到比較多的就是開源架構。Opensource對於開發人員來說簡直就是福音,對於整個軟體行業也起到了不小的推動性的作用。
Openfire在這種環境下應運而生,而且作為即時通訊類開源架構迅速走紅,下面我們就一起來學習這樣一款拯救宇宙的開源架構,文章的最後會運用Openfire做出一個可以即時通訊的AndroidAPP,如果結合上地理位置再多點UI和互動上的設計提升,這不就是陌陌嗎?YY了一會,覺得挺有趣,那麼 Just do it

Openfire概念性介紹請點擊:http://blog.csdn.net/ithomer/article/details/7192257
Openfire官網:http://www.igniterealtime.org/
Openfire安裝文檔:http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/install-guide.html

1. 選擇伺服器

對於即時通訊軟體,除了我們的用戶端,伺服器端更是關鍵。因為伺服器是串連兩個會話的橋樑。根據安裝文檔中,Openfire提供了多個平台的安裝版本。Windows, Linux/Unix。所以支援還是很豐富的。至於伺服器的選擇我們可以選擇自己的ECS,本地PC,或者Linux虛擬機器。選擇本機安裝的請略過此步驟。
為了更加符合真實的安裝環境,我選擇本地的Linux虛擬機器作為伺服器環境。方便以後部署到真實的伺服器環境中。
在進行下一步之前請先在server上安裝mysql和java。

2. Install openfire

從官網上下載對應的版本,我這裡選擇Openfire_3.9.3 Linux版本,登陸伺服器後直接使用wget下載

wget http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire-3.9.3-1.i386.rpm//下載完成後使用rpm進行安裝rpm -ivh openfire-3.9.3-1.i386.rpm

Openfire安裝完成後會在/opt目錄下產生openfire/目錄。
安裝完成後就需要進行資料庫的配置,按照官方文檔:

Make sure that you are using MySQL 4.1.18 or later (5.x recommended) ¹.Create a database for the Openfire tables:mysqladmin create [databaseName](note: "databaseName" can be something like 'openfire')Import the schema file from the resources/database directory of the installation folder:Unix/Linux: cat openfire_mysql.sql | mysql [databaseName]; Windows: type openfire_mysql.sql | mysql [databaseName];Start the Openfire setup tool, and use the appropriate JDBC connection settings.

首先使用mysqladmin create openfire建立名為openfire的資料庫, cd /opt/openfire/resources/database進入openfire的資料庫資來源目錄,使用cat openfire_mysql.sql | mysql openfire匯入openfire的schema資料庫檔案。

3. 啟動Openfire服務

使用rpm安裝完成後的openfire會在/etc/init.d/中自動產生openfire 檔案,可以直接在這裡開啟服務.

Usage /etc/init.d/openfire {start|stop|restart|status|condrestart|reload}

運行openfire服務:/etc/init.d/openfire start,運行/etc/init.d/openfire status顯示沒有成功運行。
查看log cat /opt/openfire/logs,顯示nohup: cannot run command /opt/openfire/jre/bin/java: No such file or directory,看來openfire找不到java,所以不能成功啟動,但是我們的系統的確已經安裝了java,所以可以通過軟鏈解決:

cd /opt/openfire/jre/bincp java java.bakrm javaln -s /usr/bin/java javaservice openfire start

軟鏈完成之後,再次開啟openfire服務:

[root@iZ23572i0rtZ bin]# /etc/init.d/openfire statusopenfire is not running[root@iZ23572i0rtZ bin]# /etc/init.d/openfire startStarting openfire:[root@iZ23572i0rtZ bin]# /etc/init.d/openfire statusopenfire is running

status顯示openfire已經成功啟動。通過虛擬機器ip訪問9090連接埠,這時會跳轉到setup介面,只需要通過setup便可以完成相關配置。

配置完成之後即可以登入自己的管理主控台。

4. Integrate to Android

既然伺服器安裝完成,那我們可以著手我們的APP。與Openfire關聯的用戶端XMPP協議庫是smack。摸索一番之後發現,要在Android中使用Smack必須使用ASmack庫。ASmack。
以執行個體為主,通過smack實現兩個用戶端之間的即時通訊。

Attention
  • 在AndroidManifest中必須添加Internet permission,否則串連失敗。<uses-permission android:name="android.permission.INTERNET"/>.
  • 用戶端對用戶端建立聊天時,SID為 username@XXXX, XXXX表示的是伺服器名字,我這裡是ECS主機名稱。
5. Github Repository

https://github.com/gongmingqm10/SmackDemo

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.