最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin41浏览0评论

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

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();
发布评论

评论列表(0)

  1. 暂无评论