websocket protocol 是html5一種新的協議。它實現了瀏覽器與服務器全雙工通信(full-duplex)。websocket是web2.0時代的新產物,用于彌補http協議的某些不足,不過他們之間真實的關系是兄弟關系,都是對socket的進一步封裝,其目前最直觀的表現就是服務器推送和聊天功能。更多知識參考:如何理解 tcp/ip, spdy, websocket 三者之間的關系?
今天的重點是講如何在android中脫離webview使用websocket,而不是在web瀏覽器使用,如果是在web瀏覽器中使用,網上已經太多教程、框架和demo,沒必要講。
到目前為止我個人認為安卓端比較好用的websocketclient有:autobahn、androidasync、java-websocket。好不好用其實需要看實際需求而定,此處我選擇java-websocket。
一、android客戶端的創建(使用java-websocket庫):
1、其實只需要掌握一個類,websocketclient即可
2、指定ip/域名和端口連接服務器,當服務器端有通知時會回調onmessage方法
3、然后調用connect方法進行連接
4、連接后就可以發送消息了,發送消息也很簡單,除了支持string的發送還支持byte發送,好了,客戶端就這么愉快的寫完了(詳細代碼見后面打包的demo)。
二、服務端的創建:
1-1、java application服務端創建(使用java-websocket庫),其實也很簡單,就繼承一個類websocketserver:
1-2、然后在main方法中開啟服務端,現在就可以用android客戶端來連接進行聊天、接收推送了,實在是太簡單了。
2-1、java web(tomcat)服務端創建,這里不使用java-websocket庫,直接使用java api javax.websocket包中的websocket相關類(注意java api只實現了標準的rfc 6455(jsr256),如果你非要選擇其它早期草案則需要用java-websocket來實現,在java-websocket中連接協議“draft_17”就是標準的rfc 6455(jsr256),另外要使用java api javax.websocket包中的websocket相關類要求jdk7及以上,tomcat 7.0.49及以上):
2-2、然后啟動tomcat就可以愉快的用android客戶端來連接進行聊天、接收推送了。
三、相關截圖:
1-1、java后臺:
1-2、java后臺對應的android客戶端
2-1、java web后臺:
2-2、java web后臺對應的android客戶端
2-3、html前端(瀏覽器):
以上通過圖文并茂的方式給大家介紹了android中使用websocket實現群聊和消息推送功能(不使用webview) ,希望對大家有所幫助!