mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-07-06 22:16:46 +00:00
Close socket on ClientMessageSchema, improve zod error (#1003)
## Description: - Close the socket on parse failure. - Use `safeParse` and `prettifyError` to improve logging output on zod validation failures. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors Co-authored-by: Scott Anderson <662325+scottanderson@users.noreply.github.com> Co-authored-by: evanpelle <evanpelle@gmail.com>
This commit is contained in:
+10
-3
@@ -10,7 +10,8 @@ import { GameEnv } from "../core/configuration/Config";
|
||||
import { getServerConfigFromServer } from "../core/configuration/ConfigLoader";
|
||||
import { GameType } from "../core/game/Game";
|
||||
import {
|
||||
ClientMessageSchema,
|
||||
ClientJoinMessageSchema,
|
||||
GameConfig,
|
||||
GameRecord,
|
||||
GameRecordSchema,
|
||||
} from "../core/Schemas";
|
||||
@@ -293,11 +294,17 @@ export function startWorker() {
|
||||
: forwarded || req.socket.remoteAddress || "unknown";
|
||||
|
||||
try {
|
||||
// Process WebSocket messages as in your original code
|
||||
// Parse and handle client messages
|
||||
const clientMsg = ClientMessageSchema.parse(
|
||||
const parsed = ClientJoinMessageSchema.safeParse(
|
||||
JSON.parse(message.toString()),
|
||||
);
|
||||
if (!parsed.success) {
|
||||
const error = z.prettifyError(parsed.error);
|
||||
log.warn("Error parsing join message client", error);
|
||||
ws.close();
|
||||
return;
|
||||
}
|
||||
const clientMsg = parsed.data;
|
||||
|
||||
if (clientMsg.type === "join") {
|
||||
// Verify this worker should handle this game
|
||||
|
||||
Reference in New Issue
Block a user