Android中使用WebSocket實現(xiàn)群聊和消息推送功能(不使用WebView)
WebSocket protocol 是HTML5一種新的協(xié)議。它實現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。WebSocket是Web2.0時代的新產(chǎn)物,用于彌補(bǔ)HTTP協(xié)議的某些不足,不過他們之間真實的關(guān)系是兄弟關(guān)系,都是對socket的進(jìn)一步封裝,其目前最直觀的表現(xiàn)就是服務(wù)器推送和聊天功能。更多知識參考:如何理解 TCP/IP, SPDY, WebSocket 三者之間的關(guān)系?
今天的重點是講如何在Android中脫離WebView使用WebSocket,而不是在Web瀏覽器使用,如果是在Web瀏覽器中使用,網(wǎng)上已經(jīng)太多教程、框架和demo,沒必要講。
到目前為止我個人認(rèn)為安卓端比較好用的WebSocketClient有:autobahn、AndroidAsync、Java-WebSocket。好不好用其實需要看實際需求而定,此處我選擇Java-WebSocket。
一、Android客戶端的創(chuàng)建(使用Java-WebSocket庫):
1、其實只需要掌握一個類,WebSocketClient即可
2、指定IP/域名和端口連接服務(wù)器,當(dāng)服務(wù)器端有通知時會回調(diào)onMessage方法
3、然后調(diào)用connect方法進(jìn)行連接
4、連接后就可以發(fā)送消息了,發(fā)送消息也很簡單,除了支持String的發(fā)送還支持byte發(fā)送,好了,客戶端就這么愉快的寫完了(詳細(xì)代碼見后面打包的demo)?!?/p>
二、服務(wù)端的創(chuàng)建:
1-1、Java Application服務(wù)端創(chuàng)建(使用Java-WebSocket庫),其實也很簡單,就繼承一個類WebSocketServer:
1-2、然后在main方法中開啟服務(wù)端,現(xiàn)在就可以用Android客戶端來連接進(jìn)行聊天、接收推送了,實在是太簡單了。
2-1、Java Web(tomcat)服務(wù)端創(chuàng)建,這里不使用Java-WebSocket庫,直接使用Java API javax.websocket包中的WebSocket相關(guān)類(注意Java API只實現(xiàn)了標(biāo)準(zhǔn)的RFC 6455(JSR256),如果你非要選擇其它早期草案則需要用Java-WebSocket來實現(xiàn),在Java-WebSocket中連接協(xié)議“Draft_17”就是標(biāo)準(zhǔn)的RFC 6455(JSR256),另外要使用Java API javax.websocket包中的WebSocket相關(guān)類要求JDK7及以上,Tomcat 7.0.49及以上):
2-2、然后啟動tomcat就可以愉快的用Android客戶端來連接進(jìn)行聊天、接收推送了。
三、相關(guān)截圖:
1-1、Java后臺:
1-2、Java后臺對應(yīng)的Android客戶端
2-1、Java Web后臺:
2-2、Java Web后臺對應(yīng)的Android客戶端
2-3、html前端(瀏覽器):
以上通過圖文并茂的方式給大家介紹了Android中使用WebSocket實現(xiàn)群聊和消息推送功能(不使用WebView) ,希望對大家有所幫助!
相關(guān)文章
Android網(wǎng)絡(luò)訪問之Retrofit使用教程
Retrofit?是一個?RESTful?的?HTTP?網(wǎng)絡(luò)請求框架的封裝,網(wǎng)絡(luò)請求的工作本質(zhì)上是?OkHttp?完成,而?Retrofit?僅負(fù)責(zé)?網(wǎng)絡(luò)請求接口的封裝2022-12-12Android中URLEncoder空格被轉(zhuǎn)碼為"+"號的處理辦法
當(dāng)上傳文件的文件名中間有空格,用URLEncoder.encode方法會把空格變成加號(+)在前臺頁面顯示的時候會多出加號,下面這篇文章主要給大家介紹了關(guān)于Android中URLEncoder空格被轉(zhuǎn)碼為"+"號的處理辦法,需要的朋友可以參考下2023-01-01Android Parcelable與Serializable詳解及區(qū)別
這篇文章主要介紹了Android Parcelable與Serializable詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-01-01android SectorMenuView底部導(dǎo)航扇形菜單的實現(xiàn)代碼
這篇文章主要介紹了android SectorMenuView底部導(dǎo)航扇形菜單的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02第三方開源Android TickPlusDrawable狀態(tài)可以通過動畫切換的按鈕
Android tickplusdrawable(TickPlusDrawable)是一個狀態(tài)可以通過動畫切換的按鈕,本文給大家分享第三方開源Android TickPlusDrawable狀態(tài)可以通過動畫切換的按鈕,感興趣的朋友一起學(xué)習(xí)吧2015-12-12Android如何通過Retrofit提交Json格式數(shù)據(jù)
本篇文章主要介紹了Android如何通過Retrofit提交Json格式數(shù)據(jù),具有一定的參考價值,有興趣的可以了解一下2017-08-08