63 lines
1.9 KiB
TypeScript
63 lines
1.9 KiB
TypeScript
import { ServerWebSocket } from "bun";
|
|
import {
|
|
WebSocketData,
|
|
WebSocketDataType,
|
|
WebSocketMessageParam,
|
|
} from "../types";
|
|
import { EJSON } from "../exports/client-exports";
|
|
import socketClientPing from "./events/client-ping";
|
|
import debugLog from "@moduletrace/datasquirel/dist/package-shared/utils/logging/debug-log";
|
|
import socketClientServiceServerLogs from "./events/client-service-server-logs";
|
|
import socketClientKillPort from "./events/client-kill-port";
|
|
|
|
type Param = {
|
|
ws: ServerWebSocket<WebSocketData>;
|
|
message: string | Buffer;
|
|
};
|
|
|
|
export default async function socketMessage({ ws, message }: Param) {
|
|
const user = ws.data.user;
|
|
const data = EJSON.parse(message.toString()) as
|
|
| WebSocketDataType
|
|
| undefined;
|
|
|
|
const websocketMessageParams: WebSocketMessageParam = {
|
|
ws,
|
|
data,
|
|
message,
|
|
};
|
|
|
|
const userRef = `User ${user.first_name} ${user.last_name} [#${user.id}]`;
|
|
const label = "Web Socket Message";
|
|
|
|
switch (data?.event) {
|
|
case "client:ping":
|
|
debugLog({
|
|
log: `${userRef} Pinging Server ...`,
|
|
addTime: true,
|
|
label,
|
|
});
|
|
await socketClientPing(websocketMessageParams);
|
|
break;
|
|
case "client:service-server-logs":
|
|
debugLog({
|
|
log: `${userRef} Getting Service Server Logs ...`,
|
|
addTime: true,
|
|
label,
|
|
});
|
|
await socketClientServiceServerLogs(websocketMessageParams);
|
|
break;
|
|
case "client:kill-port":
|
|
debugLog({
|
|
log: `${userRef} Killing Port ${data.port} ...`,
|
|
addTime: true,
|
|
label,
|
|
});
|
|
await socketClientKillPort(websocketMessageParams);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|