From e0c25a2c0d87cc91dd6e593b1f2c6fd135fcbe1a Mon Sep 17 00:00:00 2001 From: Argenis Date: Mon, 23 Mar 2026 12:33:23 -0400 Subject: [PATCH] fix(gateway): send error responses for unrecognized WebSocket message types (#3681) (#4381) Previously, the /ws/chat handler silently ignored messages with unrecognized types, leaving clients waiting for a response that never comes. Now sends explicit error messages describing the expected format. --- src/gateway/ws.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/gateway/ws.rs b/src/gateway/ws.rs index ea606ad79..f76f1c22e 100644 --- a/src/gateway/ws.rs +++ b/src/gateway/ws.rs @@ -270,7 +270,22 @@ async fn handle_socket( process_chat_message(&state, &mut agent, &mut sender, &content, &session_key) .await; } + } else { + let unknown_type = parsed["type"].as_str().unwrap_or("unknown"); + let err = serde_json::json!({ + "type": "error", + "message": format!( + "Unsupported message type \"{unknown_type}\". Send {{\"type\":\"message\",\"content\":\"your text\"}}" + ) + }); + let _ = sender.send(Message::Text(err.to_string().into())).await; } + } else { + let err = serde_json::json!({ + "type": "error", + "message": "Invalid JSON. Send {\"type\":\"message\",\"content\":\"your text\"}" + }); + let _ = sender.send(Message::Text(err.to_string().into())).await; } } @@ -293,6 +308,13 @@ async fn handle_socket( let msg_type = parsed["type"].as_str().unwrap_or(""); if msg_type != "message" { + let err = serde_json::json!({ + "type": "error", + "message": format!( + "Unsupported message type \"{msg_type}\". Send {{\"type\":\"message\",\"content\":\"your text\"}}" + ) + }); + let _ = sender.send(Message::Text(err.to_string().into())).await; continue; }