1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-14 06:32:36 +01:00

🎨 add opcodes

This commit is contained in:
Flam3rboy 2021-04-06 04:07:32 +02:00
parent 9c04313826
commit 6b61c86e3f
9 changed files with 144 additions and 18 deletions

View File

@ -4,6 +4,8 @@ import { setHeartbeat } from "../util/setHeartbeat";
import WebSocket from "../util/WebSocket"; import WebSocket from "../util/WebSocket";
export function onHeartbeat(this: WebSocket, data: Payload) { export function onHeartbeat(this: WebSocket, data: Payload) {
// TODO: validate payload
setHeartbeat(this); setHeartbeat(this);
Send(this, { op: 11 }); Send(this, { op: 11 });

View File

@ -0,0 +1,28 @@
import { CLOSECODES, OPCODES, Payload } from "../util/Constants";
import { Send } from "../util/Send";
import WebSocket from "../util/WebSocket";
export function onLazyRequest(this: WebSocket, { d }: Payload) {
// TODO: check data
const { guild_id, typing, channels, activities } = d;
Send(this, {
op: OPCODES.Dispatch,
s: this.sequence++,
t: "GUILD_MEMBER_LIST_UPDATE",
d: {
ops: [
{
range: [0, 99],
op: "SYNC",
items: [{ group: { id: "online", count: 0 } }],
},
],
online_count: 1,
member_count: 1,
id: "everyone",
guild_id,
groups: [{ id: "online", count: 1 }],
},
});
}

View File

@ -2,5 +2,5 @@ import { CLOSECODES, Payload } from "../util/Constants";
import WebSocket from "../util/WebSocket"; import WebSocket from "../util/WebSocket";
export function onPresenceUpdate(this: WebSocket, data: Payload) { export function onPresenceUpdate(this: WebSocket, data: Payload) {
return this.close(CLOSECODES.Unknown_error); // return this.close(CLOSECODES.Unknown_error);
} }

View File

@ -3,5 +3,5 @@ import { CLOSECODES, Payload } from "../util/Constants";
import WebSocket from "../util/WebSocket"; import WebSocket from "../util/WebSocket";
export function onRequestGuildMembers(this: WebSocket, data: Payload) { export function onRequestGuildMembers(this: WebSocket, data: Payload) {
return this.close(CLOSECODES.Unknown_error); // return this.close(CLOSECODES.Unknown_error);
} }

View File

@ -2,4 +2,6 @@ import { CLOSECODES, Payload } from "../util/Constants";
import WebSocket from "../util/WebSocket"; import WebSocket from "../util/WebSocket";
export function onResume(this: WebSocket, data: Payload) {} export function onResume(this: WebSocket, data: Payload) {
return this.close(CLOSECODES.Session_timed_out);
}

View File

@ -0,0 +1,76 @@
[
[4047587481, 0, 0, -1, 0],
[1509401575, 0, 1, -1, 0],
[1865079242, 0, 1, -1, 0],
[1962538549, 1, 0, -1, 0],
[3816091942, 3, 2, -1, 0],
[4130837190, 0, 10, -1, 0],
[1861568052, 0, 1, -1, 0],
[2290910058, 6, 2, -1, 0],
[1578940118, 1, 1, -1, 0],
[1571676964, 0, 1, -1, 2],
[3640172371, 0, 2, -1, 2],
[1658164312, 2, 1, -1, 0],
[98883956, 1, 1, -1, 0],
[3114091169, 0, 1, -1, 0],
[2570684145, 4, 1, -1, 2],
[4007615411, 0, 1, -1, 0],
[3665310159, 2, 1, -1, 1],
[852550504, 3, 1, -1, 0],
[2333572067, 0, 1, -1, 0],
[935994771, 1, 1, -1, 0],
[1127795596, 1, 1, -1, 0],
[4168223991, 0, 1, -1, 0],
[18585280, 0, 1, -1, 1],
[327482016, 0, 1, -1, 2],
[3458098201, 7, 1, -1, 0],
[478613943, 2, 1, -1, 1],
[2792197902, 0, 1, -1, 2],
[284670956, 0, 1, -1, 0],
[2099185390, 0, 1, -1, 0],
[1202202685, 0, 1, -1, 0],
[2122174751, 0, 1, -1, 0],
[3633864632, 0, 1, -1, 0],
[3103053065, 0, 1, -1, 0],
[820624960, 0, 1, -1, 0],
[1134479292, 0, 1, -1, 0],
[2511257455, 3, 1, -1, 3],
[2599708267, 0, 1, -1, 0],
[613180822, 1, 1, -1, 0],
[2885186814, 0, 1, -1, 0],
[221503477, 0, 1, -1, 0],
[1054317075, 0, 1, -1, 3],
[683872522, 0, 1, -1, 1],
[1739278764, 0, 2, -1, 0],
[2855249023, 0, 1, -1, 0],
[3721841948, 0, 1, -1, 0],
[1285203515, 0, 1, -1, 0],
[1365487849, 6, 1, -1, 0],
[955229746, 0, 1, -1, 0],
[3128009767, 0, 10, -1, 0],
[441885003, 0, 1, -1, 0],
[3433971238, 0, 1, -1, 2],
[1038765354, 3, 1, -1, 0],
[1174347196, 0, 1, -1, 0],
[3649806352, 1, 1, -1, 0],
[2973729510, 2, 1, -1, 0],
[2571931329, 1, 6, -1, 0],
[3884442008, 0, 1, -1, 0],
[978673395, 1, 1, -1, 0],
[4050927174, 0, 1, -1, 0],
[1260103069, 0, 1, -1, 0],
[4168894280, 0, 1, -1, 0],
[4045587091, 0, 1, -1, 0],
[2003494159, 1, 1, -1, 0],
[51193042, 0, 1, -1, 0],
[2634540382, 3, 1, -1, 0],
[886364171, 0, 1, -1, 0],
[3898604944, 0, 1, -1, 0],
[3388129398, 0, 1, -1, 0],
[3964382884, 2, 1, -1, 1],
[3305874255, 0, 1, -1, 0],
[156590431, 0, 1, -1, 0],
[3106485751, 0, 0, -1, 0],
[3035674767, 0, 1, -1, 0],
[851697110, 0, 1, -1, 0]
]

View File

@ -2,6 +2,7 @@ import { Payload } from "../util/Constants";
import WebSocket from "../util/WebSocket"; import WebSocket from "../util/WebSocket";
import { onHeartbeat } from "./Heartbeat"; import { onHeartbeat } from "./Heartbeat";
import { onIdentify } from "./Identify"; import { onIdentify } from "./Identify";
import { onLazyRequest } from "./LazyRequest";
import { onPresenceUpdate } from "./PresenceUpdate"; import { onPresenceUpdate } from "./PresenceUpdate";
import { onRequestGuildMembers } from "./RequestGuildMembers"; import { onRequestGuildMembers } from "./RequestGuildMembers";
import { onResume } from "./Resume"; import { onResume } from "./Resume";
@ -14,6 +15,11 @@ export default {
2: onIdentify, 2: onIdentify,
3: onPresenceUpdate, 3: onPresenceUpdate,
4: onVoiceStateUpdate, 4: onVoiceStateUpdate,
5: onResume, // 5: Voice Server Ping
6: onResume,
// 7: Reconnect: You should attempt to reconnect and resume immediately.
8: onRequestGuildMembers, 8: onRequestGuildMembers,
// 9: Invalid Session
// 10: Hello
14: onLazyRequest,
}; };

View File

@ -4,9 +4,9 @@ import WebSocket from "../util/WebSocket";
export function check(this: WebSocket, schema: any, data: any) { export function check(this: WebSocket, schema: any, data: any) {
try { try {
return instanceOf(schema, data); if (instanceOf(schema, data) !== true) throw "invalid";
} catch (error) { } catch (error) {
// invalid identify struct // invalid payload
this.close(CLOSECODES.Decode_error); this.close(CLOSECODES.Decode_error);
return false; return false;
} }

View File

@ -1,16 +1,28 @@
export enum OPCODES { export enum OPCODES {
Dispatch, Dispatch = 0,
Heartbeat, Heartbeat = 1,
Identify, Identify = 2,
Presence_Update, Presence_Update = 3,
Voice_State_Update, Voice_State_Update = 4,
Dummy_Value, // ? What is opcode 5? Voice_Server_Ping = 5, // ? What is opcode 5?
Resume, Resume = 6,
Reconnect, Reconnect = 7,
Request_Guild_Members, Request_Guild_Members = 8,
Invalid_Session, Invalid_Session = 9,
Hello, Hello = 10,
Heartbeat_ACK, Heartbeat_ACK = 11,
Guild_Sync = 12,
DM_Update = 13,
Lazy_Request = 14,
Lobby_Connect = 15,
Lobby_Disconnect = 16,
Lobby_Voice_States_Update = 17,
Stream_Create = 18,
Stream_Delete = 19,
Stream_Watch = 20,
Stream_Ping = 21,
Stream_Set_Paused = 22,
Request_Application_Commands = 24,
} }
export enum CLOSECODES { export enum CLOSECODES {
Unknown_error = 4000, Unknown_error = 4000,