diff --git a/wgshare/lib/pages/metting/meeting_main_logic.dart b/wgshare/lib/pages/metting/meeting_main_logic.dart index bd55e76..502dadf 100644 --- a/wgshare/lib/pages/metting/meeting_main_logic.dart +++ b/wgshare/lib/pages/metting/meeting_main_logic.dart @@ -171,20 +171,23 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ /// --------------------------signalR Socket相关 /// Socket长连接 Future signalRSocket() async { - state.hubConnection.value = HubConnectionBuilder().withUrl('${RequestConfig().baseUrl}/session-manage', - HttpConnectionOptions( - transport: HttpTransportType.longPolling, + state.hubConnection.value = HubConnectionBuilder() + .withUrl('${RequestConfig().baseUrl}/session-manage', HttpConnectionOptions( + transport: HttpTransportType.webSockets, accessTokenFactory: () async => await Future.value(UserStore.to.token), logging: (level, message) => debugPrint("wgs输出===:SignalR Socket-$message"), - )).build(); + )) + // 配置断线重连策略:默认重连4次,分别间隔10秒 4秒 10秒 10秒 + .withAutomaticReconnect([10000, 4000, 10000, 10000]).build(); await state.hubConnection.value?.start(); joinMeetingToSocket(); /// 远端用户或主播加入会议室回调 - state.hubConnection.value?.on("UserJoined", (user){ - var jsonStr = const Utf8Decoder().convert(json.encode(user).runes.toList()); + state.hubConnection.value?.on("UserJoined", (e){ + // var jsonStr = const Utf8Decoder().convert(json.encode(user).runes.toList()); + var jsonStr = json.encode(e); var listDynamic = jsonDecode(jsonStr); List meetingRoomUsers = (listDynamic as List).map((e) => MeetingRoomUser.fromJson((e as Map))).toList(); state.cacheUsers.value.addAll(meetingRoomUsers); @@ -193,8 +196,9 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ }); /// 远端用户或主播离开会议室回调 - state.hubConnection.value?.on("UserLeave", (uid){ - var jsonStr = const Utf8Decoder().convert(json.encode(uid).runes.toList()); + state.hubConnection.value?.on("UserLeave", (e){ + // var jsonStr = const Utf8Decoder().convert(json.encode(uid).runes.toList()); + var jsonStr = json.encode(e); List listDynamic = jsonDecode(jsonStr); for(String uidStr in listDynamic){ for(var j = 0; j < state.cacheUsers.value.length; j++){ @@ -209,7 +213,8 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ /// 申请/结束发言-管理员同意或拒绝回调 state.hubConnection.value?.on("ManagerRefresh", (e){ - var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList()); + // var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList()); + var jsonStr = json.encode(e?[0]); var listDynamic = jsonDecode(jsonStr); MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic); if(meetingRoomUser.isRoomManager == true){ @@ -246,7 +251,8 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ /// 会议室接收消息回调 state.hubConnection.value?.on("ReceiveMessage", (e){ - var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList()); + // var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList()); + var jsonStr = json.encode(e); List list = json.decode(jsonStr); MeetingRoomMsg meetingRoomMsg = MeetingRoomMsg(list[0],list[1],list[2],0); state.meetingRoomMsgs.value.add(meetingRoomMsg); @@ -259,8 +265,8 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ /// 被移除会议回调 state.hubConnection.value?.on("ForceExitRoom", (e){ - var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList()); - var listDynamic = jsonDecode(jsonStr); + // var jsonStr = const Utf8Decoder().convert(json.encode(e).runes.toList()); + var jsonStr = json.encode(e); debugPrint("wgs输出===:Socket-被移除会议:$jsonStr"); Get.back(); ToastUtils.showSuccess("你已被移除会议"); @@ -289,7 +295,8 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ /// 单独用户开闭麦回调 state.hubConnection.value?.on("OperMicr", (e){ - var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList()); + // var jsonStr = const Utf8Decoder().convert(json.encode(e?[0]).runes.toList()); + var jsonStr = json.encode(e?[0]); var listDynamic = jsonDecode(jsonStr); MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic); if(meetingRoomUser.enableMicr == true){