Android中使用WebSocket實(shí)現(xiàn)群聊和消息推送功能(不使用WebView)
WebSocket protocol 是HTML5一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。WebSocket是Web2.0時(shí)代的新產(chǎn)物,用于彌補(bǔ)HTTP協(xié)議的某些不足,不過他們之間真實(shí)的關(guān)系是兄弟關(guān)系,都是對socket的進(jìn)一步封裝,其目前最直觀的表現(xiàn)就是服務(wù)器推送和聊天功能。更多知識參考:如何理解 TCP/IP, SPDY, WebSocket 三者之間的關(guān)系?
今天的重點(diǎn)是講如何在Android中脫離WebView使用WebSocket,而不是在Web瀏覽器使用,如果是在Web瀏覽器中使用,網(wǎng)上已經(jīng)太多教程、框架和demo,沒必要講。
到目前為止我個(gè)人認(rèn)為安卓端比較好用的WebSocketClient有:autobahn、AndroidAsync、Java-WebSocket。好不好用其實(shí)需要看實(shí)際需求而定,此處我選擇Java-WebSocket。
一、Android客戶端的創(chuàng)建(使用Java-WebSocket庫):
1、其實(shí)只需要掌握一個(gè)類,WebSocketClient即可

2、指定IP/域名和端口連接服務(wù)器,當(dāng)服務(wù)器端有通知時(shí)會回調(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庫),其實(shí)也很簡單,就繼承一個(gè)類WebSocketServer:

1-2、然后在main方法中開啟服務(wù)端,現(xiàn)在就可以用Android客戶端來連接進(jìn)行聊天、接收推送了,實(shí)在是太簡單了。

2-1、Java Web(tomcat)服務(wù)端創(chuàng)建,這里不使用Java-WebSocket庫,直接使用Java API javax.websocket包中的WebSocket相關(guān)類(注意Java API只實(shí)現(xiàn)了標(biāo)準(zhǔn)的RFC 6455(JSR256),如果你非要選擇其它早期草案則需要用Java-WebSocket來實(shí)現(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實(shí)現(xiàn)群聊和消息推送功能(不使用WebView) ,希望對大家有所幫助!
相關(guān)文章
Android ListView實(shí)現(xiàn)圖文列表顯示
這篇文章主要為大家詳細(xì)介紹了Android ListView實(shí)現(xiàn)圖文列表顯示,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Jetpack Compose 雙指拖拽實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了Jetpack Compose 雙指拖拽實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Android App中各種數(shù)據(jù)保存方式的使用實(shí)例總結(jié)
這篇文章主要介紹了Android App中各種數(shù)據(jù)保存方式的使用實(shí)例,列舉了SharedPreferences接口、機(jī)身空間存儲、SD卡存儲和SQLite數(shù)據(jù)庫四種方式的代碼例子,需要的朋友可以參考下2016-04-04
Android studio保存logcat日志到本地的操作
這篇文章主要介紹了Android studio保存logcat日志到本地的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程
這篇文章主要介紹了Android開發(fā)中使用mms模塊收發(fā)單卡和雙卡短信的教程,文中舉了MOTO XT800手機(jī)(估計(jì)已經(jīng)落伍很久了--)的例子來說明如何解決雙卡雙待時(shí)的短信異常問題,需要的朋友可以參考下2016-02-02
Android實(shí)現(xiàn)啟動頁倒計(jì)時(shí)效果
這篇文章主要介紹了Android實(shí)現(xiàn)啟動頁倒計(jì)時(shí)效果的示例代碼,幫助大家更好的理解和學(xué)習(xí)使用Android進(jìn)行開發(fā),感興趣的朋友可以了解下2021-04-04
Android Recyclerview實(shí)現(xiàn)上拉加載更多功能
在項(xiàng)目中使用列表的下拉刷新和上拉加載更多是很常見的功能。下文給大家?guī)砹薃ndroid Recyclerview上拉加載更多功能,需要的朋友參考下吧2017-05-05
Android使用Jni實(shí)現(xiàn)壓力鍋數(shù)據(jù)檢測效果示例
這篇文章主要介紹了Android使用Jni實(shí)現(xiàn)壓力鍋數(shù)據(jù)檢測效果,涉及Android結(jié)合Jni實(shí)現(xiàn)進(jìn)度條模擬壓力鍋數(shù)據(jù)監(jiān)測效果的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12

