Changing the way Requests work
This commit is contained in:
@ -33,7 +33,7 @@ export class ConnectionManager {
|
||||
|
||||
private static async onConnection(socket: WebSocket, req: IncomingMessage) {
|
||||
Logging.log("New Connection:");
|
||||
const sendError = (msg: string) => socket.send(JSON.stringify({ ns: "error_msg", args: [msg] }));
|
||||
const sendError = (error: string) => socket.send(JSON.stringify({ ns: "error_msg", data: { error } }));
|
||||
|
||||
|
||||
const session = new Session();
|
||||
@ -78,12 +78,14 @@ export class ConnectionManager {
|
||||
}
|
||||
|
||||
const stored = new Map<string, Query>();
|
||||
const answer = (id: string, data: any, err: boolean = false) => {
|
||||
socket.send(JSON.stringify({ ns: "message", args: [id, err, data] }));
|
||||
const answer = (id: string, data: any, error: boolean = false) => {
|
||||
socket.send(JSON.stringify({ ns: "message", data: { id, error, data } }));
|
||||
}
|
||||
|
||||
const handler = new Map<string, ((...args: any[]) => void)>();
|
||||
handler.set("query", async (id: string, type: QueryTypes, path: string[], data: any) => {
|
||||
const handler = new Map<string, ((data: any) => void)>();
|
||||
type QueryData = { id: string, type: QueryTypes, path: string[], data: any };
|
||||
handler.set("query", async ({ id, type, path, data }: QueryData) => {
|
||||
//TODO: Handle case with no id, type, path
|
||||
Logging.debug(`Request with id '${id}' from type '${type}' and path '${path}' with data`, data)
|
||||
try {
|
||||
const perms = db.rules.hasPermission(path, session);
|
||||
@ -116,7 +118,7 @@ export class ConnectionManager {
|
||||
let subscriptionID = shortid.generate();
|
||||
|
||||
query.subscribe(data, (data) => {
|
||||
socket.send(JSON.stringify({ ns: "event", args: [subscriptionID, data] }));
|
||||
socket.send(JSON.stringify({ ns: "event", data: { id: subscriptionID, data } }));
|
||||
});
|
||||
stored.set(id, query);
|
||||
answer(id, subscriptionID);
|
||||
@ -136,11 +138,16 @@ export class ConnectionManager {
|
||||
}
|
||||
})
|
||||
|
||||
socket.on("message", (rawData: string) => {
|
||||
let data: { ns: string, args: any[] } = JSON.parse(rawData);
|
||||
let h = handler.get(data.ns);
|
||||
if (h) {
|
||||
h(...data.args);
|
||||
socket.on("message", async (rawData: string) => {
|
||||
try {
|
||||
let message: { ns: string, data: any } = JSON.parse(rawData);
|
||||
let h = handler.get(message.ns);
|
||||
if (h) {
|
||||
h(message.data);
|
||||
}
|
||||
} catch (err) {
|
||||
Logging.errorMessage("Unknown Error:");
|
||||
Logging.error(err);
|
||||
}
|
||||
})
|
||||
|
||||
|
Reference in New Issue
Block a user