|
|
@ -1,6 +1,7 @@ |
|
|
import 'dart:convert'; |
|
|
import 'dart:convert'; |
|
|
|
|
|
|
|
|
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; |
|
|
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/global.dart'; |
|
|
import 'package:dating_touchme_app/controller/overlay_controller.dart'; |
|
|
import 'package:dating_touchme_app/controller/overlay_controller.dart'; |
|
|
import 'package:dating_touchme_app/extension/ex_widget.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:dating_touchme_app/service/live_chat_message_service.dart'; |
|
|
import 'package:easy_refresh/easy_refresh.dart'; |
|
|
import 'package:easy_refresh/easy_refresh.dart'; |
|
|
import 'package:flutter/material.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_screenutil/flutter_screenutil.dart'; |
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; |
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
|
|
|
import 'package:get_storage/get_storage.dart'; |
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
|
|
import 'package:tdesign_flutter/tdesign_flutter.dart'; |
|
|
|
|
|
|
|
|
@ -120,6 +126,7 @@ class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getUserData(String miId, int type) async { |
|
|
getUserData(String miId, int type) async { |
|
|
try { |
|
|
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 频道 |
|
|
/// 调用接口创建 RTC 频道 |
|
|
Future<void> createRtcChannel() async { |
|
|
Future<void> createRtcChannel() async { |
|
|
if (isLive.value) { |
|
|
if (isLive.value) { |
|
|
@ -498,6 +520,16 @@ class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
base.data!.uid, |
|
|
base.data!.uid, |
|
|
ClientRoleType.clientRoleBroadcaster, |
|
|
ClientRoleType.clientRoleBroadcaster, |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
final Stream<SSEResponse> 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 { |
|
|
} else { |
|
|
final message = base.message.isNotEmpty ? base.message : '创建频道失败'; |
|
|
final message = base.message.isNotEmpty ? base.message : '创建频道失败'; |
|
|
SmartDialog.showToast(message); |
|
|
SmartDialog.showToast(message); |
|
|
@ -742,6 +774,7 @@ class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
channelName: channelId, |
|
|
channelName: channelId, |
|
|
message: json.encode({'type': 'end_live'}), |
|
|
message: json.encode({'type': 'end_live'}), |
|
|
); |
|
|
); |
|
|
|
|
|
sseClient.close(connectionId: "connectionId"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
|