封装websocket类的方法

235 阅读1分钟

引入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