diff --git a/android/gradle.properties b/android/gradle.properties index ba730e5..dc43f24 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -2,8 +2,8 @@ org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m android.useAndroidX=true android.enableJetifier=true -org.gradle.java.home=D:/jdk-17.0.11 -systemProp.http.proxyHost=127.0.0.1 -systemProp.http.proxyPort=10810 -systemProp.https.proxyHost=127.0.0.1 -systemProp.https.proxyPort=10810 \ No newline at end of file +#org.gradle.java.home=D:/jdk-17.0.11 +#systemProp.http.proxyHost=127.0.0.1 +#systemProp.http.proxyPort=10810 +#systemProp.https.proxyHost=127.0.0.1 +#systemProp.https.proxyPort=10810 \ No newline at end of file diff --git a/lib/controller/discover/room_controller.dart b/lib/controller/discover/room_controller.dart index 53a4fb8..d5da128 100644 --- a/lib/controller/discover/room_controller.dart +++ b/lib/controller/discover/room_controller.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:agora_rtc_engine/agora_rtc_engine.dart'; +import 'package:dating_touchme_app/config/env_config.dart'; import 'package:dating_touchme_app/controller/global.dart'; import 'package:dating_touchme_app/controller/overlay_controller.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart'; @@ -22,9 +23,14 @@ import 'package:dating_touchme_app/rtc/rtm_manager.dart'; import 'package:dating_touchme_app/service/live_chat_message_service.dart'; import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_http_sse/client/sse_client.dart'; +import 'package:flutter_http_sse/enum/request_method_type_enum.dart'; +import 'package:flutter_http_sse/model/sse_request.dart'; +import 'package:flutter_http_sse/model/sse_response.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; +import 'package:get_storage/get_storage.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:tdesign_flutter/tdesign_flutter.dart'; @@ -120,6 +126,7 @@ class RoomController extends GetxController with WidgetsBindingObserver { + getUserData(String miId, int type) async { try { @@ -457,6 +464,21 @@ class RoomController extends GetxController with WidgetsBindingObserver { } } + final request = SSERequest( + requestType: RequestMethodType.get, + url: "${EnvConfig.mainBaseUrl}dating-agency-sse/user/sse/connect", + headers: { + "Authorization": GetStorage().read('token'), + "'X-APP-ID'": '50325897884795885' + }, + onData: (data) => print("Received: $data"), + onError: (error) => print("Error: $error"), + onDone: () => print("Stream closed"), + retry: true, // Enables automatic reconnection + ); + + final sseClient = SSEClient(); + /// 调用接口创建 RTC 频道 Future createRtcChannel() async { if (isLive.value) { @@ -498,6 +520,16 @@ class RoomController extends GetxController with WidgetsBindingObserver { base.data!.uid, ClientRoleType.clientRoleBroadcaster, ); + + final Stream stream = sseClient.connect("connectionId", request); + stream.listen( + (SSEResponse response) { + print("Received event: ${response.event}, data: ${response.data}"); + }, + onError: (error) => print("SSE Error: $error"), + onDone: () => print("SSE Connection Closed"), + ); + print("sse链接"); } else { final message = base.message.isNotEmpty ? base.message : '创建频道失败'; SmartDialog.showToast(message); @@ -742,6 +774,7 @@ class RoomController extends GetxController with WidgetsBindingObserver { channelName: channelId, message: json.encode({'type': 'end_live'}), ); + sseClient.close(connectionId: "connectionId"); } } } catch (e) { diff --git a/pubspec.yaml b/pubspec.yaml index 378288a..82d4cfa 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -84,6 +84,7 @@ dependencies: extended_text: ^15.0.2 extended_text_field: ^16.0.2 emoji_text_field: ^1.0.0 + flutter_http_sse: ^1.0.5 dev_dependencies: flutter_test: