Socket.io 连接在本地有效,但在生产服务中无效

编程入门 行业动态 更新时间:2024-10-07 12:26:32

Socket.io 连接在本地有效,<a href=https://www.elefans.com/category/jswz/34/1771274.html style=但在生产服务中无效"/>

Socket.io 连接在本地有效,但在生产服务中无效

我正在尝试在我的 Dart 客户端和生产环境中运行的 Socket.io 服务器之间建立 WebSocket 连接,但我在服务器日志中遇到错误。具体来说,客户端正在发送带有以下参数的 GET 请求:

GET /socket.io/?EIO=4&transport=websocket HTTP/1.0 Dart/2.19 (dart:io)

但是,服务器响应 400 Bad Request 错误。只有当我尝试从远程位置连接到服务器时,才会出现此问题。当我在我的本地机器上运行客户端时,连接没有任何问题。我正在使用 socket_io_client 包在 Dart 中创建 Socket.io 客户端并将其配置为使用 websocket 传输。

我不确定是什么导致了这个错误,如果有任何关于如何排查和解决这个问题的见解或建议,我将不胜感激。提前谢谢你。

我已经尝试了几个故障排除步骤,包括检查服务器日志是否有任何错误,验证服务器 URL 和端口,确保服务器配置为接受 WebSocket 连接,以及检查客户端代码是否有任何错误或拼写错误。

期望Dart客户端与Socket.io服务器建立WebSocket连接,实时接收数据。但是,当我尝试从远程位置连接到服务器时,服务器响应 400 Bad Request 错误,连接失败。这个问题似乎只发生在生产中,因为当我在本地机器上运行客户端时连接工作正常。

对于如何解决和解决此问题的任何见解或建议,我将不胜感激。提前谢谢你。

回答如下:

如果 WebSocket 连接是通过 SSL 建立的,则服务器使用的 SSL 证书可能存在问题。 试试这个:

在 main.dart 文件中

在主要功能之前添加:

    class MyHttpOverrides extends HttpOverrides {
      @override
      HttpClient createHttpClient(SecurityContext? context) {
        return super.createHttpClient(context)
          ..badCertificateCallback =
              (X509Certificate cert, String host, int port) => true;
      }
    }

在主要功能中添加:

HttpOverrides.global = MyHttpOverrides();

更多推荐

Socket.io 连接在本地有效,但在生产服务中无效

本文发布于:2024-05-30 06:55:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770226.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:但在   Socket   io

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!