subscribeToSee method

Future<void> subscribeToSee(
  1. String url
)

Implementation

Future<void> subscribeToSee(String url) async {
  Dio dio = Dio();
  // 设置 Dio 的一些默认配置(如果需要)
  dio.options.connectTimeout = const Duration(seconds: 30);
  dio.options.receiveTimeout = const Duration(minutes: 15); // 接收超时
  dio.options.sendTimeout = const Duration(minutes: 15); // 接收超时
  //dio.interceptors.add(CustomInterceptors());

  dio.options.headers = {
    'Accept': 'text/event-stream',
    'X-Token': xToken,
  };
  //debugPrint('xToken=$xToken');
  //Constant.instance.chatLib.idleTimes = 0;
  final Response response = await dio.get(url,
      onReceiveProgress: (int rece, int total) {
        // debugPrint(
        //     'Receive Progress: ${(rece / total * 100).toStringAsFixed(
        //         0)}% ${DateTime.now()}');
      });
  //Constant.instance.chatLib.idleTimes = 0;
  if (response.statusCode == 200) {
    _listener?.updateProgress(99);
    print("上传成功:${response.statusCode}");
    final body = response.data;

    if (body != null) {
      final strData = body;
      final lines = strData.split("\n");
      var event = "";
      var data = "";

      print("上传监听返回 $strData");

      if (lines.isEmpty) {
        _listener?.uploadFailed("数据为空,上传失败");
        return;
      }

      for (var line in lines) {
        if (line.startsWith("event:")) {
          event = line.replaceFirst("event:", "");
        } else if (line.startsWith("data:")) {
          data = line.replaceFirst("data:", "");
          final result = UploadPercent.fromJson(jsonDecode(data));

          if (result.percentage == 100 && result.data != null) {
            _listener?.uploadSuccess(result.data!);
            print("上传成功 ${result.data?.uri}");
            print("${DateTime.now()} 上传进度 ${result.percentage}");
          } else {
            _listener?.updateProgress(result.percentage ?? 0);
            print("${DateTime.now()}  上传进度 ${result.percentage}");
          }
        }
      }
    }
  }else{
    _listener?.uploadFailed('上传失败:${response.statusCode} - ${response.statusMessage}');
  }
}