You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中获取WebSocket的错误代码及错误信息

WebSocket连接错误(499)的信息获取方案

问题背景

创建WebSocket连接时触发错误,控制台提示:"Websocket connection to ...ip... failed: Error during WebSocket handshake: Unexpected response code: 499",推测是杀毒软件拦截连接导致。当前代码中try/catch无法捕获该错误,onclose事件触发但无法从事件对象中提取错误详情。

相关代码

let errMsg = "";
try {
    socket = new WebSocket(server_ip.value, "chat");    // (*)
}
catch(err) {
    // js doesn't come to this branch
    Websocketerror = true;
    errMsg = "Websocket creation error. Code = " + err.code.toString() +
                "  Description = _" + err.message + "_";
}

if (websocketError) {
    appendMessageText(errMsg, "msg_err");
}
else {
    socket.onopen = ws_OnConnectionCreated;
    socket.onclose = ws_onConnectionClose;
    socket.onerror = ws_OnConnectionError;
}

function ws_onConnectionClose(event) {
    let status = event.wasClean ? "ok." : "(aborted).";
    appendMessageText("Websocket is closed" + status, "msg_log");
    console.log("------> ws_onConnectionClose(event): event =", event);
};

解决方案

1. 实现onerror事件处理函数

WebSocket连接错误属于异步错误,不会被同步try/catch捕获,必须通过onerror事件获取错误详情:

function ws_OnConnectionError(event) {
    console.error("WebSocket错误详情:", event);
    // 部分浏览器会在event.message中返回错误描述
    errMsg = "WebSocket连接失败: " + (event.message || "未知错误");
    appendMessageText(errMsg, "msg_err");
    websocketError = true;
}

2. 增强onclose事件的信息提取

在onclose事件中,可通过event.code和event.reason获取关闭的错误码与原因(非标准错误码可能因浏览器存在差异):

function ws_onConnectionClose(event) {
    let status = event.wasClean ? "正常关闭" : "异常中断";
    let closeInfo = `WebSocket已关闭: ${status},错误码: ${event.code},原因: ${event.reason || "无"}`;
    appendMessageText(closeInfo, "msg_log");
    console.log("WebSocket关闭详情:", event);
}

3. 修正变量名大小写错误

代码中Websocketerror与websocketError大小写不一致,会导致错误状态判断失效,需统一变量名:

// catch块中修正为小写开头
websocketError = true;

关键说明

  • WebSocket连接错误为异步触发,同步try/catch无法捕获,必须依赖onerror事件
  • 结合onerror和onclose事件可完整获取连接失败的错误信息
  • 非标准错误码(如499)可能需要通过onerror事件对象或浏览器控制台日志进一步确认

内容的提问来源于stack exchange,提问作者Tobic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 08:40:24