如何处理 websockets 中的无效 URL / IP?

How to handle invalid URL / IP's in websockets?

我正在使用 HTML / Javascript 网络套接字与 python 服务器程序通信。现在我可以选择通过 clean UI 更改服务器的 IP,并且我有一个 .onerror 函数来处理连接错误,但是这不处理初始错误。我的意思是,如果我输入一个完全无效的地址,它甚至不会尝试连接它(这很好)并吐出错误,如:[Error] WebSocket network error: The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 2.)。我该如何处理这个错误,例如弹出一条消息?

下面是我的 JS 脚本的简要概述。

function updateDevice(id, ipUI){
    if ("WebSocket" in window){
        var ws = new WebSocket(serverIP);

// Here is where I need to handle the bad address right?

        ws.onopen = function(){
            ws.send(id);
        };

        ws.onmessage = function (evt){ 
            var received_msg = evt.data;
        };

// This function ws.onerror doesnt handle bad addresses.

        ws.onerror = function(){
            document.getElementById("error_msg").style.display='block';
        };
    }else{
        alert("This site doesnt support your browser...");
    };
};

您可以将 new WebSocket 包装在 try/catch 中:

try {
    new WebSocket(serverIP);
} catch (e) {
    if (e instanceof DOMException) {
        alert('Invalid address!');
    } else {
        throw e;
    }
}