Handle websocket errors with missing messages

This commit is contained in:
xNewz 2025-12-30 07:52:49 +07:00
parent 3982f5d204
commit 7e74579312

View File

@ -36,12 +36,23 @@ class WebSocketMonitorType extends MonitorType {
});
ws.onerror = (error) => {
const invalidAcceptCodes = [ "WS_ERR_INVALID_SEC_WEBSOCKET_ACCEPT_HEADER" ];
let message = error?.message || "";
// Some ws versions may not populate the message even for invalid accept headers
if (!message && invalidAcceptCodes.includes(error?.code)) {
message = "Invalid Sec-WebSocket-Accept header";
} else if (!message) {
message = "Unknown websocket error";
}
// Give user the choice to ignore Sec-WebSocket-Accept header
if (monitor.wsIgnoreSecWebsocketAcceptHeader && error.message === "Invalid Sec-WebSocket-Accept header") {
if (monitor.wsIgnoreSecWebsocketAcceptHeader && (message === "Invalid Sec-WebSocket-Accept header" || invalidAcceptCodes.includes(error?.code))) {
resolve([ "101 - OK", 1000 ]);
return;
}
// Upgrade failed, return message to user
resolve([ error.message, error.code ]);
resolve([ message, error?.code ]);
};
ws.onclose = (event) => {