turboci-admin/src/websocket/socket-message.ts
2026-03-10 08:56:20 +00:00

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;
}
}