UniApp简单的WebSocket单例模式 示例

UniApp简单的WebSocket单例模式连接工具类 示例:

class WebSocketUtil {
    
    
  constructor(url) {
    
    
    if (!WebSocketUtil.instance) {
    
    
      const ws = new WebSocket(url);
      WebSocketUtil.instance = ws;
    }
    return WebSocketUtil.instance;
  }

  static getInstance() {
    
    
    return WebSocketUtil.instance;
  }

  static send(msg) {
    
    
    if (WebSocketUtil.instance.readyState === WebSocket.OPEN) {
    
    
      WebSocketUtil.instance.send(msg);
    } else {
    
    
      console.error('WebSocket未连接');
    }
  }

  static close() {
    
    
    WebSocketUtil.instance.close();
    WebSocketUtil.instance = null;
  }
}

export default WebSocketUtil;

如上所述,这个单例模式的工具类中使用了ES6的class语法来定义WebSocketUtil类。在类实例化时,会根据是否有instance属性来决定是否实例化WebSocket实例。同时,也提供了getInstance、send和close方法来获取WebSocket实例、发送消息以及关闭连接。

在UniApp中使用这个WebSocket工具类很简单,只需要导入该工具类,然后将服务端的Websocket URL传递给构造函数,就可以获取到全局唯一的WebSocket连接实例。

import WebSocketUtil from 'path/to/WebSocketUtil.js';

const url = 'ws://localhost:3000';
const ws = new WebSocketUtil(url);

//发送消息
ws.send('Hello World!');

//关闭连接
ws.close();

上述代码中,先通过构造函数实例化一次,然后通过getInstance方法获取到该类的实例,并调用send方法发送消息和close方法关闭连接。因为单例模式的原因,该方法只会创建一次连接,并保证了在应用程序中全局唯一。

猜你喜欢

转载自blog.csdn.net/m0_37577465/article/details/131328985