基於Socket.IO實現Android聊天功能



1、簡述

Socket.IO是一個徹底由JavaScript實現、基於Node.js、支持WebSocket的協議用於實時通訊、跨平臺的開源框架,它包括了客戶端的JavaScript和服務器端的Node.js。git

該種官方介紹看起來有點懵逼,簡而言之就是:github

客戶端可經過Socket.IO與服務器創建實時通訊管道

客戶端經過Socket.io與服務器創建通訊通道.png

2、應用

該下就是介紹Socket.IO通訊管道的鋪設、通訊以及銷燬工做。服務器

2.1 引入Socket.io包

compile 'io.socket:socket.io-client:0.8.3'

2.2 實例化Socket對象

服務器地址(該地址爲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;
}

2.3 註冊監聽

在這裏咱們就須要註冊一些監聽事件,用來監聽Socket通訊過程當中產生的一些行爲,好比如下是註冊Socket鏈接成功後的監聽回調:測試

Emitter.Listener connectListener;
connectListener = new Emitter.Listener() {
            @Override
            public void call(Object... args) {

            }
        };
socket.on(Socket.EVENT_CONNECT, connectListener);

2.4 經過Socket對象創建鏈接

至此,咱們的管道鋪設工做就已經完成了,接下來咱們只須要打開管道的開關,那麼客戶端與服務器之間就能夠互通互信:socket.io

mSocket.connect();

那咱們要如何知道二者之間是否已經鏈接成功了呢?沒錯,在2.3 咱們註冊過監聽,一旦Socket鏈接成功,就會觸發該回調,此時咱們就能夠根據項目的實際需求來作相應的處理了。spa

2.5 簡單使用

此時,若是咱們要向服務器發送消息,要怎麼實現呢?Socket.IO提供了以下操做:.net

mSocket.emit("new message", content);

還能夠這樣:

mSocket.emit("new message", content, new Ack() {
        @Override
        public void call(Object... args) {
            
        }
    });

2.6 管道的銷燬

當咱們不想再使用管道的時候,就須要把管道給銷燬,很簡單,咱們只須要斷開鏈接以及註銷監聽便可:

mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT, connectListener);

好啦,Socket.IO整個通訊過程就完成啦,於咱們而言,是否是簡單易用。

3、完整源碼奉上

不知該部分是否是衆望所歸(哈哈~),該份源碼是基於Socket.IO官方的服務器地址結合實際項目融合而成,擴展性極強,特分享出來,供各位參考。

基於Socket.IO實現Android聊天功能

最後,感謝你的到來,恭喜你,堅持到了最後,該文和源碼如有不當之處,請予以斧正。


相關文章
相關標籤/搜索