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 클래스 구문을 사용하여 WebSocketUtil 클래스를 정의합니다. 클래스가 인스턴스화되면 인스턴스 속성이 있는지 여부에 따라 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 메서드를 호출하여 연결을 닫습니다. 싱글톤 모드로 인해 이 방법은 연결을 한 번만 생성하며 응용 프로그램에서 전역적으로 고유함을 보장합니다.