引入websocket库
npm install websocket
或
yarn add websocket
开始使用websocket库并进行封装
import WebSocket from "websocket"
class WebSocketService {
constructor(url) {
this.url = url
this.websocket = null
this.reconnectInterval = 5000 // 重连间隔时间
this.heartBeatInterval = 3000 // 心跳间隔时间
this.heartBeatTimer = null
this.connect()
}
connect() {
this.websocket = new WebSocket(this.url)
this.websocket.onopen = () => {
console.log("WebSocket connected")
this.startHeartBeat()
}
this.websocket.onclose = () => {
console.log("WebSocket disconnected")
this.stopHeartBeat()
setTimeout( () => {
console.log("WebSocket reconnecting…")
this.connect()
},this.reconnectInterval)
}
this.websocket.onerror = (error) => {
console.log("WebSocket error:", error)
this.websocket.close()
}
}
startHeartBeat() {
this.heartBeatTimer = setInterval ( () => {
if(this.websocket.readyState === WebSocket.OPEN) {
this.websocket.send("websocket ping heartBeat")
}
}, this.heartBeatInterval)
}
stopHeartBeat() {
clearInterval(this.heartBeatTimer)
}
}
export default WebSocketService