但在生产服务中无效"/>
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 连接在本地有效,但在生产服务中无效
发布评论