websocket 重連封裝

2022-09-08 01:27:11 字數 1598 閱讀 2701

/**

* websocket 類

** **方法和原生websocket保持一致

* @param  url 連線位址

* @param  isreconnect 是否包含重連機制

* @param  options 配置引數

* **/

class ws ) 

this.opt = 

this.lockreconnect = false // 重連鎖,避免頻繁重連

this.isclose = false

this.onopen = () => {} // 建立開啟連線**

this.onmessage = () => {} // 收到訊息通知的**

this.onclose = () => {} // 關閉連線的**

this.onerror = () => {} // 連線錯誤**

this.timeoutobj = null // 心跳檢測計時器

this.intervalobj = null // 定時傳送計時器

this.reconnecttimer = null // 避免重連鎖

this.createws()

} else 

} else 

}// 建立ws

createws() 

this.ws = new websocket(this.opt.url)

this.isclose = false

this.setwsdata()

this.ws.onopen = () => 

this.onopen()

}this.ws.onmessage = (data) =>  else 

}this.ws.onclose = () => 

this.ws.onerror = () => 

}// 設定ws引數

setwsdata()  else 

}// 傳送訊息

send(data) 

// 關閉連線

close() 

// 清除定時器

cleartimer() 

if (this.timeoutobj) 

if (this.intervalobj) 

}// 開啟心跳

start() , this.opt.timeout)

return this

}// 重置心跳

reset() 

// 重連

reconnect() 

if (this.lockreconnect) return

this.lockreconnect = true

if (this.reconnecttimer) cleartimeout(this.reconnecttimer)

this.reconnecttimer = settimeout(() => , this.opt.reconnectstep)

return this

}// ping

ping()  else 

} catch (e) 

}}, this.opt.intervalstep)}}

}

websocket 斷線重連

摘要websocket reconnect websocket是html5發布之後出現的一種新技術,說它是新技術,其實也不是多新的技術了,因為畢竟也有2 3年了,但是找了很多國內的例項,缺發現不多,不知道是它不好用呢,還是說這種技術原來就有缺陷呢,咱們暫且不說,今天我們就來介紹一下websocket...

Websocket心跳重連

websocket心跳重連 最近的工作業務上有用到關於websocket的相關知識,本來打算用socket.io去完成,但是最後還是採用了自帶的websocket的方式完成需求 this.websocket.binarytype arraybuffer 現在想象一下有這麼乙個場景,如果網路狀態不佳,...

websocket 心跳重連

websocket是什麼 websocket作用是來做訊息的實時推送 websocket的基本事件有onopen onmessage onerror onclose這四個事件,onopen是連線已開啟,且可以通訊,onmessage是收到訊息,onerror是websocket發生錯誤,onclos...