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,這樣咱們一個簡單的斷線重連就作好了,趕忙去試一下吧