()
| 121 | } |
| 122 | |
| 123 | function registerWS() { |
| 124 | openPromise = new Promise((resolve, reject) => { |
| 125 | const timeout = setTimeout(() => { |
| 126 | reject( |
| 127 | new Error( |
| 128 | `Cannot connect to the server in ${connectTimeout / 1000} seconds`, |
| 129 | ), |
| 130 | ) |
| 131 | }, connectTimeout)?.unref?.() |
| 132 | if (ctx.ws.OPEN === ctx.ws.readyState) { |
| 133 | resolve() |
| 134 | } |
| 135 | // still have a listener even if it's already open to update tries |
| 136 | ctx.ws.addEventListener('open', () => { |
| 137 | tries = reconnectTries |
| 138 | resolve() |
| 139 | clearTimeout(timeout) |
| 140 | }) |
| 141 | }) |
| 142 | ctx.ws.addEventListener('message', (v) => { |
| 143 | onMessage(v.data) |
| 144 | }) |
| 145 | ctx.ws.addEventListener('close', () => { |
| 146 | tries -= 1 |
| 147 | if (autoReconnect && tries > 0) { |
| 148 | setTimeout(reconnect, reconnectInterval) |
| 149 | } |
| 150 | }) |
| 151 | } |
| 152 | |
| 153 | registerWS() |
| 154 |
no test coverage detected