src/client/websocket/packets/WebSocketPacketManager.js

src/structures/datastore/WebSocketManagerDataStore.js
Added "rough" reconnection attempting
The following however still needs to be done:
1) stop trying after a certain amount of time
2) increasing timeout between each timeout
3) re-evaluate the current method of how reconnecting is handled
internally
This commit is contained in:
hydrabolt
2016-04-19 20:24:23 +01:00
parent da42b422f0
commit acc9c9bf12
5 changed files with 85 additions and 7 deletions

View File

@@ -8,8 +8,6 @@ const BeforeReadyWhitelist = [
Constants.WSEvents.GUILD_DELETE,
];
var amount = 0;
class WebSocketPacketManager {
constructor(websocketManager) {
@@ -58,8 +56,32 @@ class WebSocketPacketManager {
}
}
setSequence(s) {
if (s && s > this.ws.store.sequence) {
this.ws.store.sequence = s;
}
}
handle(packet) {
amount++;
if (packet.op === Constants.OPCodes.RECONNECT) {
this.setSequence(packet.s);
this.ws.tryReconnect();
return;
}
if (packet.op === Constants.OPCodes.INVALID_SESSION) {
this.ws._sendNewIdentify();
return;
}
if (this.ws.reconnecting) {
this.ws.reconnecting = false;
this.ws.checkIfReady();
}
this.setSequence(packet.s);
if (!this.ws.emittedReady) {
if (BeforeReadyWhitelist.indexOf(packet.t) === -1) {
this.queue.push(packet);

View File

@@ -28,6 +28,8 @@ class ReadyHandler extends AbstractHandler {
client.store.NewChannel(privateDM);
}
this.packetManager.ws.store.sessionID = data.session_id;
this.packetManager.ws.checkIfReady();
}