v3 with more features

This commit is contained in:
Soph :3 2024-12-28 03:19:00 +02:00
parent f3c87e1c84
commit 5cb7062d4e
Signed by: sophie
GPG key ID: EDA5D222A0C270F2
6 changed files with 178 additions and 27 deletions

View file

@ -18,6 +18,7 @@ type MessageEvents = {
join: (join: proto.Profile) => void;
leave: (id: string) => void;
chown: () => void;
tokenRecieved: () => void;
serverMessage: (serverMessage: string) => void;
};
@ -33,6 +34,8 @@ interface Player {
export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvents>) {
private ws: WebSocket;
me!: Player;
token?: string;
chatHistory: proto.ServerMessage_Chat[] = [];
room: {
name?: string;
@ -126,10 +129,10 @@ export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvent
}
constructor(url: string, token?: string) {
super();
this.ws = new WebSocket(url.replace("http", "ws"), {
this.ws = new WebSocket(url.replace("http", "ws") + (token ? ("?t=" + token) : ""), {
//@ts-expect-error
headers: {
Origin: url + (token ? ("?t=" + token) : ""),
Origin: url,
"User-Agent": new UserAgent().toString(),
},
protocol: "pianoverse",
@ -166,8 +169,8 @@ export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvent
this.room.owner = decode.chown;
this.emit("chown");
}
if (decode.event == SEventType.MESSAGE) {
this.emit("serverMessage", decode.message);
if (decode.event == SEventType.POPUP) {
this.emit("serverMessage", decode.popup);
}
if (decode.event == SEventType.RATELIMIT) {
console.log("Ratelimit reached! Time left: " + decode.ratelimit);
@ -211,6 +214,10 @@ export class Client extends (EventEmitter as new () => TypedEmitter<MessageEvent
decode.chat!.content
);
}
if (decode.event == SEventType.TOKEN) {
this.token = decode.token;
this.emit("tokenRecieved")
}
});
}
}