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

Cha*_*osh 7 javascript error-handling websocket browser-console

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

Error in connection establishment: net::ERR_CONNECTION_REFUSED

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

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

pau*_*sm4 -7

我想到了几种可能性:

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

    \n\n
    myWebSocket.onerror = myEventHandler;\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
  3. 将你的“连接”包裹在一个try/catch 块中

    \n\n
    try {\n   const connection = new WebSocket(myUrl);\n   ...\n}\ncatch(error) {\n   console.error(error);\n}\n
    Run Code Online (Sandbox Code Playgroud)
  4. \n
  5. 构建您的代码,使您的 I/O 是事件驱动的:

    \n\n

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

  6. \n
\n\n

\r\n
\r\n
myWebSocket.onerror = myEventHandler;\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

附录:

\n\n
    \n
  • 以上方法可以让你彻底处理websockets异常。

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

    \n\n
    \n

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

    \n\n

    ..已知\xe2\x80\x9c第一次机会\xe2\x80\x9d异常\xe2\x80\x93调试器在应用程序处理异常之前\n第一次有机会检查异常(或者不)。

    \n
    \n\n

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

  • \n
  • 可能的建议:

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

    • \n
    • 此链接建议您也许可以使用过滤器来“隐藏网络消息”(我自己还没有尝试过)。另请参阅此链接

    • \n
  • \n
\n

  • 谢谢回复。然而,这些方法都不起作用。尽管如此,控制台中还是出现了一条红色的大错误消息。 (6认同)
  • 这篇文章没有解决问题(不是在控制台中显示 Web 套接字错误消息)。其他捕获的错误不会显示在控制台中。 (2认同)
  • 我认为这个答案/帖子需要在顶部清楚地说明__消息不能被抑制__,因为会误导读者认为它可以通过错误处理程序来实现。您关于错误处理的回复很好,但目前似乎无法在代码中抑制烦人的 websocket 消息。 (2认同)