mirror of
https://github.com/danbulant/discord.js
synced 2026-05-24 20:42:27 +00:00
add handler in case heartbeat is not acked (#1013)
* add handler in case heartbeat is not acked * ffs
This commit is contained in:
parent
7c12fdcb56
commit
3eca3ba95e
3 changed files with 19 additions and 8 deletions
|
|
@ -416,6 +416,7 @@ class Client extends EventEmitter {
|
|||
_pong(startTime) {
|
||||
this.pings.unshift(Date.now() - startTime);
|
||||
if (this.pings.length > 3) this.pings.length = 3;
|
||||
this.clearTimeout(this._ackTimeout);
|
||||
}
|
||||
|
||||
_setPresence(id, presence) {
|
||||
|
|
|
|||
|
|
@ -48,14 +48,22 @@ class ClientManager {
|
|||
* @param {number} time The interval in milliseconds at which heartbeat packets should be sent
|
||||
*/
|
||||
setupKeepAlive(time) {
|
||||
this.heartbeatInterval = this.client.setInterval(() => {
|
||||
this.client.emit('debug', 'Sending heartbeat');
|
||||
this.client._pingTimestamp = Date.now();
|
||||
this.client.ws.send({
|
||||
op: Constants.OPCodes.HEARTBEAT,
|
||||
d: this.client.ws.sequence,
|
||||
}, true);
|
||||
}, time);
|
||||
this.heartbeatInterval = this.client.setInterval(this.ping.bind(this), time);
|
||||
}
|
||||
|
||||
ping() {
|
||||
this.client.emit('debug', 'Sending heartbeat');
|
||||
this.client._pingTimestamp = Date.now();
|
||||
this.client.ws.send({
|
||||
op: Constants.OPCodes.HEARTBEAT,
|
||||
d: this.client.ws.sequence,
|
||||
}, true);
|
||||
|
||||
const lastPing = this.client.ping;
|
||||
|
||||
this.client._ackTimeout = this.client.setTimeout(() => {
|
||||
this.client.ws.ws.close(1005);
|
||||
}, lastPing ? lastPing * 20 : 20e3);
|
||||
}
|
||||
|
||||
destroy() {
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ class ReadyHandler extends AbstractHandler {
|
|||
const client = this.packetManager.client;
|
||||
const data = packet.d;
|
||||
|
||||
client.manager.ping();
|
||||
|
||||
const clientUser = new ClientUser(client, data.user);
|
||||
client.user = clientUser;
|
||||
client.readyAt = new Date();
|
||||
|
|
|
|||
Loading…
Reference in a new issue