/** * 一个简单到发指的 WebSocket 类 * @author yutent * @date 2023/01/17 17:32:51 */ import { WebSocketServer } from 'ws' class WebSocket { #ws = null // ws实例 #queue = [] // 消息队列 constructor(server) { if (server.listening) { let conn = new WebSocketServer({ server, path: '/ws-vue-live' }) conn.on('connection', ws => { this.#ws = ws // ws.on('message', data => { // console.log(data + ''); // }) while (this.#queue.length) { let msg = this.#queue.shift() this.send(msg) } }) } } send(msg = {}) { if (this.#ws) { this.#ws.send(JSON.stringify(msg)) } else { this.#queue.push(msg) } } } export default function (server) { return new WebSocket(server) }