37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
////
|
|
// Dispatch server->client Messages received via WebSocket
|
|
|
|
import type { Message } from "@/shared/types"
|
|
import { cacheCommands } from "./commands"
|
|
import { handleOutput } from "./scrollback"
|
|
import { handleStreamStart, handleStreamAppend, handleStreamReplace, handleStreamEnd } from "./stream"
|
|
import { handleGameStart } from "./game"
|
|
import { handleSessionStart, handleSessionUpdate } from "./session"
|
|
|
|
// message received from server
|
|
export async function dispatchMessage(msg: Message) {
|
|
switch (msg.type) {
|
|
case "output":
|
|
handleOutput(msg); break
|
|
case "commands":
|
|
cacheCommands(msg.data as string[]); break
|
|
case "error":
|
|
console.error(msg.data); break
|
|
case "stream:start":
|
|
handleStreamStart(msg); break
|
|
case "stream:end":
|
|
handleStreamEnd(msg); break
|
|
case "stream:append":
|
|
handleStreamAppend(msg); break
|
|
case "stream:replace":
|
|
handleStreamReplace(msg); break
|
|
case "game:start":
|
|
await handleGameStart(msg); break
|
|
case "session:start":
|
|
handleSessionStart(msg); break
|
|
case "session:update":
|
|
handleSessionUpdate(msg); break
|
|
default:
|
|
console.error("unknown message type", msg)
|
|
}
|
|
} |