Socket.IO是一個徹底由JavaScript實現、基於Node.js、支持WebSocket的協議用於實時通訊、跨平臺的開源框架,它包括了客戶端的JavaScript和服務器端的Node.js。git
該種官方介紹看起來有點懵逼,簡而言之就是:github
客戶端可經過Socket.IO與服務器創建實時通訊管道
該下就是介紹Socket.IO通訊管道的鋪設、通訊以及銷燬工做。服務器
compile 'io.socket:socket.io-client:0.8.3'
服務器地址(該地址爲Socket.IO官方測試地址,實際項目中請更換):框架
String CHAT_SERVER_URL = "https://socket-io-chat.now.sh/"
根據服務器地址,實例化Socket對象:socket
Socket mSocket = IO.socket(CHAT_SERVER_URL, options);
其中options是可供用戶選擇的一些配置參數,部分配置以下:ide
public static class Options extends io.socket.engineio.client.Socket.Options { // 是否自動重連 public boolean reconnection = true; // 重連嘗試次數 public int reconnectionAttempts; // 重連間隔 public long reconnectionDelay; // 最大鏈接等待時間 public long reconnectionDelayMax; // 鏈接超時時間 (ms),設置爲-1表示不超時 public long timeout = 20000; }
在這裏咱們就須要註冊一些監聽事件,用來監聽Socket通訊過程當中產生的一些行爲,好比如下是註冊Socket鏈接成功後的監聽回調:測試
Emitter.Listener connectListener; connectListener = new Emitter.Listener() { @Override public void call(Object... args) { } }; socket.on(Socket.EVENT_CONNECT, connectListener);
至此,咱們的管道鋪設工做就已經完成了,接下來咱們只須要打開管道的開關,那麼客戶端與服務器之間就能夠互通互信:socket.io
mSocket.connect();
那咱們要如何知道二者之間是否已經鏈接成功了呢?沒錯,在2.3 咱們註冊過監聽,一旦Socket鏈接成功,就會觸發該回調,此時咱們就能夠根據項目的實際需求來作相應的處理了。spa
此時,若是咱們要向服務器發送消息,要怎麼實現呢?Socket.IO提供了以下操做:.net
mSocket.emit("new message", content);
還能夠這樣:
mSocket.emit("new message", content, new Ack() { @Override public void call(Object... args) { } });
當咱們不想再使用管道的時候,就須要把管道給銷燬,很簡單,咱們只須要斷開鏈接以及註銷監聽便可:
mSocket.disconnect(); mSocket.off(Socket.EVENT_CONNECT, connectListener);
好啦,Socket.IO整個通訊過程就完成啦,於咱們而言,是否是簡單易用。
不知該部分是否是衆望所歸(哈哈~),該份源碼是基於Socket.IO官方的服務器地址結合實際項目融合而成,擴展性極強,特分享出來,供各位參考。
最後,感謝你的到來,恭喜你,堅持到了最後,該文和源碼如有不當之處,請予以斧正。