Add event bus to pool for socket open/close

This commit is contained in:
Jonathan Staab
2023-03-28 15:07:06 -05:00
parent 5131a89c29
commit 557ab542b7
4 changed files with 25 additions and 13 deletions
+11 -8
View File
@@ -31,6 +31,7 @@ export class Socket {
this._onOpen = e => {
this.status = Socket.STATUS.READY
this.ready?.resolve()
this.bus.emit('open')
}
this._onMessage = e => {
@@ -45,6 +46,7 @@ export class Socket {
this.disconnect()
this.ready?.reject()
this.status = Socket.STATUS.CLOSED
this.bus.emit('close')
}
}
async connect() {
@@ -65,14 +67,15 @@ export class Socket {
await this.ready?.catch(() => null)
}
disconnect() {
if (this.ws) {
this.ws.close()
this.ws.removeEventListener("open", this._onOpen)
this.ws.removeEventListener("message", this._onMessage)
this.ws.removeEventListener("error", this._onClose)
this.ws.removeEventListener("close", this._onClose)
this.ws = undefined
}
this.ws?.close()
this.ws?.removeEventListener("open", this._onOpen)
this.ws?.removeEventListener("message", this._onMessage)
this.ws?.removeEventListener("close", this._onClose)
this.ws = undefined
}
cleanup() {
this.disconnect()
this.bus.clear()
}
handleMessages() {
for (const json of this.queue.splice(0, 10)) {