mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-15 02:53:31 +01:00
cleanup ws ratelimiting, and apirequest (#957)
* cleanup ws ratelimiting, and apirequest * cleanup timestamps * clean up timestamps
This commit is contained in:
@@ -4,7 +4,7 @@ const Constants = require('../../util/Constants');
|
|||||||
function getRoute(url) {
|
function getRoute(url) {
|
||||||
let route = url.split('?')[0];
|
let route = url.split('?')[0];
|
||||||
if (route.includes('/channels/') || route.includes('/guilds/')) {
|
if (route.includes('/channels/') || route.includes('/guilds/')) {
|
||||||
const startInd = ~route.indexOf('/channels/') ? route.indexOf('/channels/') : route.indexOf('/guilds/');
|
const startInd = route.includes('/channels/') ? route.indexOf('/channels/') : route.indexOf('/guilds/');
|
||||||
const majorID = route.substring(startInd).split('/')[2];
|
const majorID = route.substring(startInd).split('/')[2];
|
||||||
route = route.replace(/(\d{8,})/g, ':id').replace(':id', majorID);
|
route = route.replace(/(\d{8,})/g, ':id').replace(':id', majorID);
|
||||||
}
|
}
|
||||||
@@ -37,11 +37,7 @@ class APIRequest {
|
|||||||
if (this.file && this.file.file) {
|
if (this.file && this.file.file) {
|
||||||
apiRequest.attach('file', this.file.file, this.file.name);
|
apiRequest.attach('file', this.file.file, this.file.name);
|
||||||
this.data = this.data || {};
|
this.data = this.data || {};
|
||||||
for (const key in this.data) {
|
for (const key in this.data) if (this.data[key]) apiRequest.field(key, this.data[key]);
|
||||||
if (this.data[key]) {
|
|
||||||
apiRequest.field(key, this.data[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (this.data) {
|
} else if (this.data) {
|
||||||
apiRequest.send(this.data);
|
apiRequest.send(this.data);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,7 +105,11 @@ class WebSocketManager extends EventEmitter {
|
|||||||
this.ws.onclose = this.eventClose.bind(this);
|
this.ws.onclose = this.eventClose.bind(this);
|
||||||
this.ws.onerror = this.eventError.bind(this);
|
this.ws.onerror = this.eventError.bind(this);
|
||||||
this._queue = [];
|
this._queue = [];
|
||||||
this._remaining = 3;
|
this._remaining = 120;
|
||||||
|
this.client.setInterval(() => {
|
||||||
|
this._remaining = 120;
|
||||||
|
this._remainingReset = Date.now();
|
||||||
|
}, 60e3);
|
||||||
}
|
}
|
||||||
|
|
||||||
connect(gateway) {
|
connect(gateway) {
|
||||||
@@ -147,17 +151,15 @@ class WebSocketManager extends EventEmitter {
|
|||||||
|
|
||||||
doQueue() {
|
doQueue() {
|
||||||
const item = this._queue[0];
|
const item = this._queue[0];
|
||||||
if (this.ws.readyState === WebSocket.OPEN && item) {
|
if (!(this.ws.readyState === WebSocket.OPEN && item)) return;
|
||||||
if (this._remaining === 0) {
|
if (this.remaining === 0) {
|
||||||
this.client.setTimeout(this.doQueue.bind(this), 1000);
|
this.client.setTimeout(this.doQueue.bind(this), Date.now() - this.remainingReset);
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
this._remaining--;
|
|
||||||
this._send(item);
|
|
||||||
this._queue.shift();
|
|
||||||
this.doQueue();
|
|
||||||
this.client.setTimeout(() => this._remaining++, 1000);
|
|
||||||
}
|
}
|
||||||
|
this._remaining--;
|
||||||
|
this._send(item);
|
||||||
|
this._queue.shift();
|
||||||
|
this.doQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ class Webhook {
|
|||||||
* 'color': '#F0F',
|
* 'color': '#F0F',
|
||||||
* 'footer_icon': 'http://snek.s3.amazonaws.com/topSnek.png',
|
* 'footer_icon': 'http://snek.s3.amazonaws.com/topSnek.png',
|
||||||
* 'footer': 'Powered by sneks',
|
* 'footer': 'Powered by sneks',
|
||||||
* 'ts': new Date().getTime() / 1000
|
* 'ts': Date.now() / 1000
|
||||||
* }]
|
* }]
|
||||||
* }).catch(console.error);
|
* }).catch(console.error);
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user