electron-egg webSocket使用封装
创始人
2024-12-28 21:06:41
0

websocket.js

class WebSocketUtil {    /**    *     * @param {*} deviceCode     * @param {*} reconnectDelay     * @param {*} isLog     */   constructor(url, reconnectDelay) {     this.socket = null;     this.socketUrl = url;     this.onSendCallback = null;     this.onOpenCallback = null;     this.onMessageCallback = null;     this.onCloseCallback = null;     this.onErrorCallback = null;     this.onReconnectCallback = null;     this.reconnectDelay = reconnectDelay; // 重连延迟时间,单位为毫秒     this.isReconnect = true; // 是否重连,自动关闭设置为false     this.isLog = false;//打印   }    socketListener(onOpen, onMessage, onSend, onClose, onError, onReconnect) {     this.onOpenCallback = onOpen;     this.onMessageCallback = onMessage;     this.onSendCallback = onSend;     this.onCloseCallback = onClose;     this.onErrorCallback = onError;     this.onReconnectCallback = onReconnect;   }    socketConnect() {     if (this.socketIsConnect()) {       return     }     this.isReconnect = true//设置为true     this.socket = new WebSocket(this.socketUrl);      this.socket.onopen = () => {       if (this.isLog) {         console.log('WebSocketUtil--WebSocket连接已打开');       }       if (typeof this.onOpenCallback === 'function') {         this.onOpenCallback();       }     };      this.socket.onmessage = (event) => {       if (this.isLog) {         console.log('WebSocketUtil--收到消息:', event.data);       }       if (typeof this.onMessageCallback === 'function') {         this.onMessageCallback(event);       }     };      this.socket.onclose = () => {       if (this.isLog) {         console.log('WebSocketUtil--WebSocket连接已关闭');       }        if (typeof this.onCloseCallback === 'function') {         this.onCloseCallback();       }       //是否重连       if (this.isReconnect && !this.socketIsConnect()) {         this.socketReConnect()       }     };      this.socket.onerror = (error) => {       if (this.isLog) {         console.error('WebSocketUtil--WebSocket连接发生错误:', error);       }       if (typeof this.onErrorCallback === 'function') {         this.onErrorCallback(error);       }       // //是否重连       // if (this.isReconnect) {       //   this.reConnect()       // }     };   }    /**    * 发送消息    * @param {*} message     * @param {*} onSend     */   socketSend(message, onSend) {     var isSuccess = false     var error = ""     if (this.socketIsConnect()) {       const msg = JSON.stringify(message);       const sendResult = this.socket.send(msg);       if (sendResult == undefined) {         if (this.isLog) {           console.log('WebSocketUtil--消息发送成功:', msg);         }         isSuccess = true       } else {         if (this.isLog) {           console.error('WebSocketUtil--消息发送失败', msg);         }         isSuccess = false       }     } else {       if (this.isLog) {         console.error('WebSocketUtil--WebSocket连接未建立或已关闭');       }       error = "连接未建立或已关闭"       isSuccess = false     }      if (typeof this.onSendCallback === 'function') {       this.onSendCallback(message, isSuccess, error)     }     if (typeof onSend === 'function') {       onSend(message, isSuccess, error);     }   }    /**    * 关闭    */   socketClose() {     this.isReconnect = false     if (this.socketIsConnect()) {       this.socket.close();     } else {       if (this.isLog) {         console.error('WebSocketUtil--WebSocket连接未建立或已关闭');       }     }   }   /**    *     */   socketReConnect() {      if (this.socketIsConnect()) {       return     }      if (this.isLog) {       console.error('WebSocketUtil--reConnect');     }      if (typeof this.onReconnectCallback === 'function') {       this.onReconnectCallback();     }      setTimeout(() => {       if (!this.socketIsConnect() && this.isReconnect) {         this.socket.close();         this.socketConnect();       }      }, this.reconnectDelay);   }    socketIsConnect() {     var isC = false;     if (this.socket != null && this.socket.readyState === WebSocket.OPEN) {       isC = true     }     return isC;   } }  export default WebSocketUtil; 

使用

import WebSocketUtil from '../api/websocket.js';     initWebSocket(deviceCode) {       this.websocket = new WebSocketUtil(api.webSocketUrl + deviceCode, 3000);       const self = this;       this.websocket.socketListener(         function onOpen() {           console.log('连接已经打开');           self.socketTips = "已连接"         },         function onMessage(event) {           var aaa = JSON.parse(event.data)           console.log('收到消息', aaa, aaa.sysMsgType);         },         function onSend(msg, isSuccess, error) {           if (isSuccess) {             console.log('消息发送成功:', msg);           } else {             console.log('消息发送失败:', msg);           }         },         function onClose() {           console.log('连接已经关闭');           self.socketTips = "连接关闭"         },         function onError(error) {           console.log('连接出现错误:', error);         },         function onReconnect() {           console.log('---重连中---:');           self.socketTips = "重连中"         },       );       this.websocket.socketConnect();     },

相关内容

热门资讯

3分钟了解!白金岛辅助怎么设置... 3分钟了解!白金岛辅助怎么设置!竟然存在有辅助app(有挂存在)-哔哩哔哩小薇(辅助器软件下载)致您...
五分钟了解!奇迹陕西怎么用挂!... 五分钟了解!奇迹陕西怎么用挂!总是存在有辅助教程(有挂存在)-哔哩哔哩1、全新机制【奇迹陕西怎么用挂...
9分钟了解!乐酷大厅怎么安装!... 9分钟了解!乐酷大厅怎么安装!本来一直总是有辅助工具(有挂细节)-哔哩哔哩1、进入游戏-大厅左侧-新...
四分钟了解!yy比鸡辅助真的假... 四分钟了解!yy比鸡辅助真的假的!竟然真的有辅助神器(有挂教程)-哔哩哔哩一、yy比鸡辅助真的假的游...
五分钟了解!福建十三时辅助!果... 五分钟了解!福建十三时辅助!果然真的是有辅助app(真的有挂)-哔哩哔哩1、超多福利:超高返利,海量...
9分钟了解!雀友会潮汕辅助器!... 9分钟了解!雀友会潮汕辅助器!原来是有辅助app(真是有挂)-哔哩哔哩亲,关键说明,雀友会潮汕辅助器...
十分钟了解!随意玩房卡代理有挂... 十分钟了解!随意玩房卡代理有挂吗!本来有辅助插件(有挂分析)-哔哩哔哩1、下载好随意玩房卡代理有挂吗...
八分钟了解!微乐智能辅助app... 八分钟了解!微乐智能辅助app!一直是有辅助方法(有挂规律)-哔哩哔哩1、玩家可以在微乐智能辅助ap...
六分钟了解!湖湘互娱牛牛!本来... 六分钟了解!湖湘互娱牛牛!本来是有辅助教程(有挂规律)-哔哩哔哩1.湖湘互娱牛牛 选牌创建新账号,点...
3分钟了解!一起温州辅助器!其... 3分钟了解!一起温州辅助器!其实真的是有辅助攻略(有挂总结)-哔哩哔哩一、一起温州辅助器可以开透视的...