Migrate most of frontend callServerMethod usage over to websocket

This commit is contained in:
AAGaming
2023-08-05 01:11:43 -04:00
committed by marios8543
parent cfb6fe69e3
commit 34d1a34b10
14 changed files with 162 additions and 160 deletions
+11 -2
View File
@@ -1,5 +1,11 @@
import Logger from './logger';
declare global {
interface Window {
DeckyBackend: WSRouter;
}
}
enum MessageType {
// Call-reply
CALL,
@@ -94,7 +100,6 @@ export class WSRouter extends Logger {
}
async onMessage(msg: MessageEvent) {
this.debug('WS Message', msg);
try {
const data = JSON.parse(msg.data) as Message;
switch (data.type) {
@@ -108,7 +113,7 @@ export class WSRouter extends Logger {
await this.write({ type: MessageType.ERROR, id: data.id, error: (e as Error)?.stack || e });
}
} else {
await this.write({ type: MessageType.ERROR, id: data.id, error: 'Route does not exist.' });
await this.write({ type: MessageType.ERROR, id: data.id, error: `Route ${data.route} does not exist.` });
}
break;
@@ -152,6 +157,10 @@ export class WSRouter extends Logger {
return resolver.promise;
}
callable<Args extends any[] = any[], Return = void>(route: string): (...args: Args) => Promise<Return> {
return (...args) => this.call<Args, Return>(route, ...args);
}
async onError(error: any) {
this.error('WS DISCONNECTED', error);
await this.connect();