一种阻止WebSocket错误显示在浏览器控制台中的方法

时间:2019-10-12 16:06:24

标签: javascript error-handling websocket browser-console

问题是当我尝试向远程主机启动新的WebSocket时,有时浏览器的控制台会显示红色错误消息并抱怨连接被拒绝,这是消息:

Error in connection establishment: net::ERR_CONNECTION_REFUSED

有一个错误很好,因为远程主机有时可能没有响应,但是我无法处理此错误消息的事实非常令人讨厌。

在我的JavaScript代码中初始化一个错误消息之前,是否有任何方法可以处理该错误消息或检查远程主机是否接受WebSocket连接?

1 个答案:

答案 0 :(得分:2)

想到了几种可能性:

  1. 添加 WebSocket.onerror错误处理程序

    myWebSocket.onerror = myEventHandler;
    
  2. 将“连接”包装在try/catch block

    try {
       const connection = new WebSocket(myUrl);
       ...
    }
    catch(error) {
       console.error(error);
    }
    
  3. 结构化代码,使I / O受事件驱动:

    https://developer.mozilla.org/en-US/docs/Web/API/WebSocket#Examples

    // Create WebSocket connection.
    const socket = new WebSocket('ws://localhost:8080');

    // Connection opened
    socket.addEventListener('open', function (event) {
        socket.send('Hello Server!');
    });

    // Listen for messages
    socket.addEventListener('message', function (event) {
       console.log('Message from server ', event.data);
    });

    // Handle errors
    socket.addEventListener('error', function (event) {
       console.log('WebSocket error observed:', event);
    });

附录:

  • 上述方法使您可以完全处理websockets异常。

  • 无论是否处理了异常,Chrome调试器都会告诉您是否发生了异常。这是一件好事。这称为“首次机会异常”:

      

    https://docs.microsoft.com/en-us/security-risk-detection/concepts/first-chance-exception

         

    ..这是一个“第一次机会”异常-调试器具有   在申请之前检查异常的第一次机会   处理(或不处理)。

    在Microsoft的Visual Studio调试器中,有一个小复选框可用于“塞住”首次机会异常。我不知道Chrome调试器中是否有类似的“复选框”。

  • 可能的建议:

    • Chrome调试器具有“过滤器”。过滤器正则表达式示例:^((?!ERR_CONNECTION_REFUSED).)*$

    • This link建议您可以使用过滤器“隐藏网络消息”(我自己还没有尝试过)。另请参见this link