android中實現消息推送
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
1、 2、 3、 4、 說完優點,我們言歸正傳,基于XMPP協議的java開發有一個開源框架,那就是smack,它主要封裝了一些XMPP的實現。而如果把它直接用在Android上是不行的,因為android缺少了一些java的類庫,于是一個改進版的asmack誕生了,它是專門為android而改進的android Androidpn在客戶端集成了asmack。這樣就可以很容易的簡立一個和服務器端的基于xmpp協議的socket連接。Androidpn的客戶端中,進行管理連接的類是XmppManager,它主要用來管理連接的信息,比如XMPP的端口、IP、登錄的用戶名密碼,以及對連接的維護。為什么還有用戶名和密碼?這不得不提到XMPP的具體細節。整個服務器端和客戶端的通信是基于一個session(會話)過程,會話開始,首先會指定服務器的端口號,然后把上述提到的信息發送到服務器端,怎么發送消息的呢?以根節點的方式開始傳遞,只有在服務器和客戶端關閉的時候才會發送它的結束標記。客戶端通過XMPP協議只用做的就是接收消息,而所有其它的操作都交給服務器,比如管理連接、消息保存等等,這樣就很大程度的減輕了客戶端的負擔。那么客戶端和服務器端的消息回應是如何實現的?如要通過一個ID來標識,具體細節可以去查看XMPP協議。 一旦注冊綁定后,服務器端就和客戶端建立了連接,客戶端只用負責去接收消息。所以當我們應用Androidpn的時候,客戶端會非常的簡單。而在服務器端,Androidpn又做了什么呢? 服務器端的展示方面,androidpn主要用到的技術是Spring和Hibernate。主要是用來展示用戶狀態和發送信息用的。 這方面的技術已經比較成熟,就不再細說了,主要要說的還是XMPP的管理。在服務器端的源碼中一個org.androidpn.server.xmpp.net.Connection類,主要是代表一個服務器上的XMPP連接,注意只是一個,它可以確保在服務器關閉的時候,發送一個標記到客戶端,告知連接斷開,需重新連接。 org.androidpn.server.xmpp.session.SessionManager主要用戶管理所有會話,比如連接斷開,刪除session以及建立連接,添加session等等。 而在管理Socket連接的時候,androidpn采用了MINA框架來進行管理,MINA的優點就是改變了我們傳統的管理socket的方式,比如沒建立一個socket開一個線程,而MINA可以實現多個線程管理N多個用戶。在處理高并發的推送上無疑是有巨大的好處的。 合理的利用監聽器來管理session,也是androidpn的優點。在安全性方面,制定了TLS(安全傳輸層)策略,并卻采用了安全認證,這些方面都做的不錯。 當然,不可避免的30秒鐘的心跳包還是必不可少的。 總之,用Androidpn好處有以下方面:采用完全開放的XMPP協議進行數據傳輸(QQ,MSN,GTalk等都是采用的這種協議);良好的框架支持(專門為android 最后是我整理的androidpn的源碼,完全可以使用。原來的服務器端用的jetty框架來代替tomcat的,我把它又重新整合到了tomcat下,可以完美的和你的服務器端融合。懶人們,來吧~~由于文件過大,所以用了外連~~喜歡的就去下載吧。。只需要改下client的raw文件夾下的ip地址就可以運行。。androidpn下載地址:http://115.com/file/bhkfse3i# Androidpn.rar
如果需要使用輪詢方式,則可以使用handler實現,很簡單如下 該文章在 2013/2/26 0:04:17 編輯過 |
關鍵字查詢
相關文章
正在查詢... |