gil.js
Version:
A powerful Node.js library for interacting with the Guilded API.
62 lines (61 loc) • 1.92 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebSocketManager = void 0;
const node_events_1 = __importDefault(require("node:events"));
const ws_1 = __importDefault(require("ws"));
const ws_2 = require("../typings/ws");
const package_json_1 = __importDefault(require("../../package.json"));
class WebSocketManager extends node_events_1.default {
constructor(options) {
super();
this.options = options;
/** The socket. */
this.socket = null;
/** The ID of the last message. */
this.lastMessageId = null;
}
;
get version() {
return this.options.version || 1;
}
;
get url() {
return this.options.url || `wss://www.guilded.gg/websocket/v${this.version}`;
}
;
connect() {
this.socket = new ws_1.default(this.url, {
headers: {
Authorization: `Bearer ${this.options.token}`,
"User-Agent": `gil.js@${package_json_1.default.version} Node.js@${process.versions.node}`,
"guilded-last-message-id": this.lastMessageId || "",
},
});
this.socket.on("message", (raw) => {
const data = JSON.parse(raw.toString());
this.onSocketMessage(data);
});
}
;
onSocketMessage(data) {
if (data.s)
this.lastMessageId = data.s;
switch (data.op) {
case ws_2.WebSocketOpCode.Welcome:
const { user } = data.d;
this.emit("ready", user);
break;
case ws_2.WebSocketOpCode.Event:
this.emit("event", data.t, data.d);
break;
}
;
}
;
}
exports.WebSocketManager = WebSocketManager;
;
;
;