mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-12 17:43:30 +01:00
websocket cleanup (#1346)
* websocket cleanup * resume event * Update Resumed.js * Update WebSocketManager.js
This commit is contained in:
@@ -16,6 +16,7 @@ class WebSocketPacketManager {
|
||||
this.queue = [];
|
||||
|
||||
this.register(Constants.WSEvents.READY, require('./handlers/Ready'));
|
||||
this.register(Constants.WSEvents.RESUMED, require('./handlers/Resumed'));
|
||||
this.register(Constants.WSEvents.GUILD_CREATE, require('./handlers/GuildCreate'));
|
||||
this.register(Constants.WSEvents.GUILD_DELETE, require('./handlers/GuildDelete'));
|
||||
this.register(Constants.WSEvents.GUILD_UPDATE, require('./handlers/GuildUpdate'));
|
||||
@@ -79,6 +80,7 @@ class WebSocketPacketManager {
|
||||
}
|
||||
|
||||
if (packet.op === Constants.OPCodes.INVALID_SESSION) {
|
||||
this.client.emit('debug', `SESSION INVALID! Waiting to reconnect: ${packet.d}`);
|
||||
if (packet.d) {
|
||||
setTimeout(() => {
|
||||
this.ws._sendResume();
|
||||
|
||||
@@ -63,8 +63,12 @@ class ReadyHandler extends AbstractHandler {
|
||||
if (!client.ws.normalReady) client.ws._emitReady(false);
|
||||
}, 1200 * data.guilds.length);
|
||||
|
||||
this.packetManager.ws.sessionID = data.session_id;
|
||||
this.packetManager.ws.checkIfReady();
|
||||
const ws = this.packetManager.ws;
|
||||
|
||||
ws.sessionID = data.session_id;
|
||||
ws._trace = data._trace;
|
||||
client.emit('debug', `READY ${ws._trace.join(' -> ')} ${ws.sessionID}`);
|
||||
ws.checkIfReady();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
26
src/client/websocket/packets/handlers/Resumed.js
Normal file
26
src/client/websocket/packets/handlers/Resumed.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const AbstractHandler = require('./AbstractHandler');
|
||||
|
||||
class ResumedHandler extends AbstractHandler {
|
||||
handle(packet) {
|
||||
const client = this.packetManager.client;
|
||||
const ws = client.ws;
|
||||
|
||||
ws._trace = packet.d._trace;
|
||||
|
||||
const replayed = ws.sequence - ws.resumeStart;
|
||||
ws.resumeStart = -1;
|
||||
|
||||
client.emit('debug', `RESUMED ${ws._trace.join(' -> ')} | replayed ${replayed} events. `);
|
||||
client.emit('resume', replayed);
|
||||
|
||||
ws.heartbeat();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Emitted whenever a websocket resumes
|
||||
* @event Client#resume
|
||||
* @param {Number} replayed Number of events that were replayed
|
||||
*/
|
||||
|
||||
module.exports = ResumedHandler;
|
||||
Reference in New Issue
Block a user