()
| 310 | } |
| 311 | |
| 312 | connect() { |
| 313 | return new Promise((resolvePromise, rejectPromise) => { |
| 314 | this.socket = new WebSocket(this.webSocketUrl) |
| 315 | this.socket.on('open', resolvePromise) |
| 316 | this.socket.on('error', rejectPromise) |
| 317 | this.socket.on('message', (raw) => { |
| 318 | const message = JSON.parse(String(raw)) |
| 319 | if (message.id && this.pending.has(message.id)) { |
| 320 | const { resolve: resolvePending, reject } = this.pending.get(message.id) |
| 321 | this.pending.delete(message.id) |
| 322 | if (message.error) reject(new Error(message.error.message)) |
| 323 | else resolvePending(message.result ?? {}) |
| 324 | return |
| 325 | } |
| 326 | if (message.method) { |
| 327 | const listeners = this.listeners.get(message.method) ?? [] |
| 328 | for (const listener of listeners) listener(message.params ?? {}) |
| 329 | } |
| 330 | }) |
| 331 | }) |
| 332 | } |
| 333 | |
| 334 | send(method, params = {}) { |
| 335 | const id = this.nextId |
no test coverage detected