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方法关闭连接。因为单例模式的原因,该方法只会创建一次连接,并保证了在应用程序中全局唯一。