diff --git a/src/client/websocket/WebSocketManager.js b/src/client/websocket/WebSocketManager.js index 71a24757abeb..eb4a8282c9e6 100644 --- a/src/client/websocket/WebSocketManager.js +++ b/src/client/websocket/WebSocketManager.js @@ -194,6 +194,15 @@ class WebSocketManager { if (!this.shardQueue.size) this.reconnecting = false; }); + shard.on(ShardEvents.RESUMED, () => { + /** + * Emitted when a shard resumes successfully. + * @event Client#shardResumed + * @param {number} id The shard ID that resumed + */ + this.client.emit(Events.SHARD_RESUMED, shard.id); + }); + shard.on(ShardEvents.CLOSE, event => { if (event.code === 1000 ? this.destroyed : UNRECOVERABLE_CLOSE_CODES.includes(event.code)) { /** diff --git a/src/client/websocket/WebSocketShard.js b/src/client/websocket/WebSocketShard.js index a317bc04218c..c927c1561016 100644 --- a/src/client/websocket/WebSocketShard.js +++ b/src/client/websocket/WebSocketShard.js @@ -239,7 +239,7 @@ class WebSocketShard extends EventEmitter { /** * Called whenever a message is received. - * @param {MessageEvent} event Event received + * @param {Event} event Event received * @private */ onMessage({ data }) { @@ -266,14 +266,11 @@ class WebSocketShard extends EventEmitter { /** * Called whenever an error occurs with the WebSocket. - * @param {ErrorEvent|Object} event The error that occurred + * @param {ErrorEvent} error The error that occurred * @private */ - onError(event) { - const error = event && event.error ? event.error : error; - if (!error) return; - - if (error.message === 'uWs client connection error') { + onError({ error }) { + if (error && error.message === 'uWs client connection error') { this.debug('Received a uWs error. Closing the connection and reconnecting...'); this.connection.close(4000); return; @@ -298,11 +295,6 @@ class WebSocketShard extends EventEmitter { * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent} */ - /** - * @external MessageEvent - * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent} - */ - /** * Called whenever a connection to the gateway is closed. * @param {CloseEvent} event Close event that was received @@ -589,7 +581,7 @@ class WebSocketShard extends EventEmitter { this.setHeartbeatTimer(-1); this.setHelloTimeout(-1); // Close the WebSocket connection, if any - if (this.connection && this.connection.readyState !== WebSocket.CLOSED) { + if (this.connection) { this.connection.close(closeCode); } else { /** diff --git a/src/client/websocket/handlers/RESUMED.js b/src/client/websocket/handlers/RESUMED.js index e345cb74bf9d..bd00ec8837a8 100644 --- a/src/client/websocket/handlers/RESUMED.js +++ b/src/client/websocket/handlers/RESUMED.js @@ -5,10 +5,10 @@ const { Events } = require('../../../util/Constants'); module.exports = (client, packet, shard) => { const replayed = shard.sequence - shard.closeSequence; /** - * Emitted when a shard resumes successfully. - * @event Client#shardResumed - * @param {number} id The shard ID that resumed - * @param {number} replayedEvents The amount of replayed events + * Emitted when the client gateway resumes. + * @event Client#resume + * @param {number} replayed The number of events that were replayed + * @param {number} shardID The ID of the shard that resumed */ - client.emit(Events.SHARD_RESUMED, shard.id, replayed); + client.emit(Events.RESUMED, replayed, shard.id); }; diff --git a/src/sharding/ShardClientUtil.js b/src/sharding/ShardClientUtil.js index 03c80ead65d7..acbe225089a4 100644 --- a/src/sharding/ShardClientUtil.js +++ b/src/sharding/ShardClientUtil.js @@ -181,11 +181,6 @@ class ShardClientUtil { _respond(type, message) { this.send(message).catch(err => { err.message = `Error when sending ${type} response to master process: ${err.message}`; - /** - * Emitted when the client encounters an error. - * @event Client#error - * @param {Error} error The error encountered - */ this.client.emit(Events.ERROR, err); }); } diff --git a/typings/index.d.ts b/typings/index.d.ts index f0b064f4b6f6..d1894df89d59 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1339,7 +1339,7 @@ declare module 'discord.js' { private connect(): Promise; private onOpen(): void; private onMessage(event: MessageEvent): void; - private onError(error: ErrorEvent | object): void; + private onError(error: ErrorEvent): void; private onClose(event: CloseEvent): void; private onPacket(packet: object): void; private setHelloTimeout(time?: number): void;