forked from drone/command-center-dashboard

shuishen
2025-04-02 e14358f85a7d32a753225f253ff223d17cf36c25
src/websocket/index.js
@@ -1,4 +1,4 @@
import ReconnectingWebSocket from 'reconnecting-websocket';
import ReconnectingWebSocket from 'reconnecting-websocket'
/**
 * ConnectWebSocket 类
@@ -6,69 +6,69 @@
 */
class ConnectWebSocket {
    _url;
    _socket;
    _hasInit;
    _messageHandler;
   _url
   _socket
   _hasInit
   _messageHandler
    constructor(url) {
        this._url = url;
        this._socket = null;
        this._hasInit = false;
        this._messageHandler = null;
    }
   constructor(url) {
      this._url = url
      this._socket = null
      this._hasInit = false
      this._messageHandler = null
   }
    initSocket() {
        if (this._hasInit) {
            return;
        }
        if (!this._url) {
            return;
        }
        // 会自动重连,无需处理重连逻辑
        this._socket = new ReconnectingWebSocket(this._url, [], {
            maxReconnectionDelay: 20000, // 断开后最大的重连时间: 20s,每多一次重连,会增加 1.3 倍,5 * 1.3 * 1.3 * 1.3...
            minReconnectionDelay: 5000, // 断开后最短的重连时间: 5s
            maxRetries: 5,
        });
        this._hasInit = true;
   initSocket() {
      if (this._hasInit) {
         return
      }
      if (!this._url) {
         return
      }
      // 会自动重连,无需处理重连逻辑
      this._socket = new ReconnectingWebSocket(this._url, [], {
         maxReconnectionDelay: 20000, // 断开后最大的重连时间: 20s,每多一次重连,会增加 1.3 倍,5 * 1.3 * 1.3 * 1.3...
         minReconnectionDelay: 5000, // 断开后最短的重连时间: 5s
         maxRetries: 5,
      })
      this._hasInit = true
        this._socket.addEventListener('open', this._onOpen.bind(this));
        this._socket.addEventListener('close', this._onClose.bind(this));
        this._socket.addEventListener('error', this._onError.bind(this));
        this._socket.addEventListener('message', this._onMessage.bind(this));
    }
      this._socket.addEventListener('open', this._onOpen.bind(this))
      this._socket.addEventListener('close', this._onClose.bind(this))
      this._socket.addEventListener('error', this._onError.bind(this))
      this._socket.addEventListener('message', this._onMessage.bind(this))
   }
    _onOpen() {
        console.log('连接成功');
    }
   _onOpen() {
      console.log('连接成功')
   }
    _onClose() {
        console.log('连接已断开');
    }
   _onClose() {
      console.log('连接已断开')
   }
    _onError() {
        console.log('连接 error');
    }
   _onError() {
      console.log('连接 error')
   }
    registerMessageHandler(messageHandler) {
        this._messageHandler = messageHandler;
    }
   registerMessageHandler(messageHandler) {
      this._messageHandler = messageHandler
   }
    _onMessage(msg) {
        // const data = JSON.parse(msg.data);
        this._messageHandler && this._messageHandler(msg.data);
    }
   _onMessage(msg) {
      // const data = JSON.parse(msg.data);
      this._messageHandler && this._messageHandler(msg.data)
   }
    sendMessage = (message) => {
        // 目前只供AI聊天使用
        this._socket?.send(message)
        // this._socket?.send(JSON.stringify(message.data));
    };
   sendMessage = message => {
      // 目前只供AI聊天使用
      this._socket?.send(message)
      // this._socket?.send(JSON.stringify(message.data));
   }
    close() {
        this._socket?.close();
    }
   close() {
      this._socket?.close()
   }
}
export default ConnectWebSocket;
export default ConnectWebSocket