websocket 斷線重連

websocket是html5發佈以後出現的一種新技術,說它是新技術,其實也不是多新的技術了,由於畢竟也有2-3年了,可是找了不少國內的實例,缺發現很少,不知道是它很差用呢,仍是說這種技術原來就有缺陷呢,我們暫且不說,今天咱們就來介紹一下websocket的斷線重連,,,,html

這裏先提供一個類庫,https://github.com/joewalnes/reconnecting-websocket ,這是一個websocket重連的類庫,對於處理一些簡單的斷線重連問題仍是比較好用的,,,並且其中的功能也比較全,有興趣的朋友能夠去研究一下html5

接來我要介紹的是我在一個項目中遇到的問題,這是一個比較廣泛的斷線重連問題。。。好啦,廢話很少說,咱們直接看例子git

首先呢 ,咱們要建立一個websocket對象,其中對象的參數是咱們要鏈接的地址,這個通常是服務端提供的。。。github

var ws = new WebSocket('ws:../../websocket');

而後咱們重寫一下監聽收到消息的事件,web

ws.onmessage = function(msg){
    console.log('msg:',msg);
    //do something
};

接下來咱們重寫一下監聽關閉鏈接的事件,websocket

ws.onclose = function(){
    console.log('closed....');
};

OK,這樣的話,最簡單的一個websocket就寫好了,那麼接下來咱們就要實現斷線重連的功能了嘍,往下看。。。socket

function reconnect (){
    rews = new WebSocket('ws:../../websocket');
    rews.onmessage = function(){
      //dosomthing  
    };
    rews.onclose = function(){
        //dosomthing
    };
}

沒錯,在這個方法裏,咱們把剛纔乾的事情重寫一遍,就是這麼easy函數

那麼問題來了,咱們要在哪裏調用這個重連函數呢,code

var disConnect = function(){
    setTimeout(function(){
         reconnect();
    },5000);
}

咱們先寫一個函數,每隔5秒去調用一次,這個函數咱們就放在onclose裏面,就是這樣htm

ws.onclose = disConnect;

ok,這樣咱們一個簡單的斷線重連就作好了,趕忙去試一下吧

相關文章
相關標籤/搜索