websocket protocol 是html5一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。websocket是web2.0時(shí)代的新產(chǎn)物,用于彌補(bǔ)http協(xié)議的某些不足,不過他們之間真實(shí)的關(guān)系是兄弟關(guān)系,都是對(duì)socket的進(jìn)一步封裝,其目前最直觀的表現(xiàn)就是服務(wù)器推送和聊天功能。更多知識(shí)參考:如何理解 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í)會(huì)回調(diào)onmessage方法
3、然后調(diào)用connect方法進(jìn)行連接
4、連接后就可以發(fā)送消息了,發(fā)送消息也很簡單,除了支持string的發(fā)送還支持byte發(fā)送,好了,客戶端就這么愉快的寫完了(詳細(xì)代碼見后面打包的demo)。
二、服務(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、然后啟動(dòng)tomcat就可以愉快的用android客戶端來連接進(jìn)行聊天、接收推送了。
三、相關(guān)截圖:
1-1、java后臺(tái):
1-2、java后臺(tái)對(duì)應(yīng)的android客戶端
2-1、java web后臺(tái):
2-2、java web后臺(tái)對(duì)應(yīng)的android客戶端
2-3、html前端(瀏覽器):
以上通過圖文并茂的方式給大家介紹了android中使用websocket實(shí)現(xiàn)群聊和消息推送功能(不使用webview) ,希望對(duì)大家有所幫助!