mirror of
https://github.com/danbulant/discord.js
synced 2026-05-22 22:08:57 +00:00
Add Sharding Support!
This commit is contained in:
parent
fb2392a1ed
commit
3fded1d7af
5 changed files with 51 additions and 4 deletions
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,5 @@
|
|||
const DocumentedItem = require('./DocumentedItem');
|
||||
const DocumentedParam = require('./DocumentedParam');
|
||||
|
||||
/*
|
||||
{ id: 'Client()',
|
||||
|
|
@ -18,13 +19,26 @@ const DocumentedItem = require('./DocumentedItem');
|
|||
class DocumentedConstructor extends DocumentedItem {
|
||||
|
||||
registerMetaInfo(data) {
|
||||
super.registerMetaInfo(data);
|
||||
this.directData = data;
|
||||
const newParams = [];
|
||||
for (const param of data.params) {
|
||||
newParams.push(new DocumentedParam(this, param));
|
||||
}
|
||||
this.directData.params = newParams;
|
||||
}
|
||||
|
||||
serialize() {
|
||||
super.serialize();
|
||||
const { id, name, description, memberof, access } = this.directData;
|
||||
return { id, name, description, memberof, access };
|
||||
const { id, name, description, memberof, access, params } = this.directData;
|
||||
return {
|
||||
id,
|
||||
name,
|
||||
description,
|
||||
memberof,
|
||||
access,
|
||||
params: params.map(p => p.serialize())
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,6 +112,9 @@ class WebSocketManager {
|
|||
this.reconnecting = false;
|
||||
const payload = this.client.options.ws;
|
||||
payload.token = this.client.token;
|
||||
if (this.client.options.shard_count > 0) {
|
||||
payload.shard = [this.client.options.shard_id, this.client.options.shard_count];
|
||||
}
|
||||
|
||||
this.send({
|
||||
op: Constants.OPCodes.IDENTIFY,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,28 @@
|
|||
/**
|
||||
* Options that can be passed to a client:
|
||||
* ```js
|
||||
* {
|
||||
* ws: {
|
||||
* large_threshold: 250,
|
||||
* compress: true,
|
||||
* properties: {
|
||||
* $os: process ? process.platform : 'discord.js',
|
||||
* $browser: 'discord.js',
|
||||
* $device: 'discord.js',
|
||||
* $referrer: '',
|
||||
* $referring_domain: '',
|
||||
* },
|
||||
* },
|
||||
* protocol_version: 6,
|
||||
* max_message_cache: 200,
|
||||
* rest_ws_bridge_timeout: 5000,
|
||||
* api_request_method: 'sequential',
|
||||
* shard_id: 0,
|
||||
* shard_count: 0,
|
||||
* };
|
||||
* ```
|
||||
* @typedef {Object} ClientOptions
|
||||
*/
|
||||
exports.DefaultOptions = {
|
||||
ws: {
|
||||
large_threshold: 250,
|
||||
|
|
@ -14,6 +39,8 @@ exports.DefaultOptions = {
|
|||
max_message_cache: 200,
|
||||
rest_ws_bridge_timeout: 5000,
|
||||
api_request_method: 'sequential',
|
||||
shard_id: 0,
|
||||
shard_count: 0,
|
||||
};
|
||||
|
||||
exports.Status = {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,10 @@
|
|||
const Discord = require('../');
|
||||
const request = require('superagent');
|
||||
|
||||
const client = new Discord.Client();
|
||||
const client = new Discord.Client({
|
||||
shard_id: 0,
|
||||
shard_count: 2,
|
||||
});
|
||||
|
||||
client.login(require('./auth.json').token).then(token => console.log('logged in with token ' + token)).catch(console.log);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue