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

标签 javascript error-handling websocket browser-console

所以问题是当我尝试向远程主机启动一个新的 WebSocket 时,有时浏览器的控制台会打印一条红色错误消息并提示连接被拒绝,消息如下:

连接建立错误:net::ERR_CONNECTION_REFUSED

出现错误没关系,因为远程主机有时可能没有响应,但我无法处理此错误消息这一事实非常烦人。

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

最佳答案

我想到了几种可能性:

  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://learn.microsoft.com/en-us/security-risk-detection/concepts/first-chance-exception

    .. it is known a “first chance” exception – the debugger is given the first chance of inspecting the exception prior to the application handling it (or not).

    在 Microsoft 的 Visual Studio 调试器中,有一个小复选框可用于“阻止”第一次机会异常。我不知道 Chrome 调试器中有任何类似的“复选框”。

  • 可能的建议:

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

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

关于javascript - 一种阻止 WebSocket 错误显示在浏览器控制台中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58355975/

相关文章:

javascript - 如何在下拉列表上动态显示多个复选框列表

javascript - for-in JavaScript 语句中的 IE8 错误?

javascript - 文本框属性更改不起作用 jQuery

php - CodeIgniter Controller 中的PHP新行

python-3.x - SyntaxError;名称 'x'是参数且非本地

asp.net-mvc - IIS 中的自定义错误页面

javascript - 如何实现Websocket?

javascript - HTML5 Canvas 改变图像颜色

javascript - 如何同步客户端和服务器上的socketIO连接ID?

spring-mvc - 如何在 Spring WebSocket 处理程序中访问 "session"范围的 bean(不是 "websocket"范围)