Flutter升级至3.10.0后StompClient连接报错:不支持HTTPS协议
Flutter升级后StompClient HTTPS连接报错解决方法
我用Flutter、Spring Boot和RabbitMQ开发了一个简易聊天应用,通过StompClient建立连接时出现错误,当前使用HTTPS请求连接。该功能在Flutter 2.2.3版本中正常运行,但升级到3.10.0版本后失效。
实现代码如下
_stompClient = StompClient( config: StompConfig( url: 'https://app/chat/web-socket', stompConnectHeaders: headers, onConnect: (frame) { Timer.periodic(Duration(seconds: 10), (_) { _stompClient.send( destination: messageSendUri, headers: headers, body: jsonEncode(body)); }); }, beforeConnect: () async { print('Trying to connect...'); await Future.delayed(Duration(seconds: 1)); print('Connecting...'); }, onStompError: (frame) => print(frame.body), onWebSocketError: (error) => print(error.toString()), ), );
运行时错误信息
I/flutter (25662): Trying to connect... I/flutter (25662): WebSocketException: Unsupported URL scheme 'https' I/flutter (25662): WebSocketException: Unsupported URL scheme 'https' I/flutter (25662): WebSocketException: Unsupported URL scheme 'https' I/flutter (25662): Connecting... I/flutter (25662): WebSocketException: Unsupported URL scheme 'https' ...
不是不允许使用HTTPS请求,问题出在WebSocket连接的协议格式上。StompClient的WebSocket连接需要使用对应加密协议的URL scheme:
- 当使用HTTPS时,WebSocket的URL协议应该是
wss://而非https:// - 普通HTTP对应的是
ws://
只需将URL修改为:
url: 'wss://app/chat/web-socket',
Flutter 3.x版本对WebSocket的协议校验更严格,之前的版本可能自动兼容了错误的scheme,升级后则明确要求使用正确的WebSocket协议前缀。修改后即可正常建立连接。
内容的提问来源于stack exchange,提问作者Tharindu Lakshan
相关产品推荐
相关产品推荐

