1.修改socket链接策略

2.增加socket重连机制
This commit is contained in:
fuenmao 2024-11-29 17:44:56 +08:00
parent 175ffa873c
commit e1e6550e31
1 changed files with 20 additions and 13 deletions

View File

@ -171,20 +171,23 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
/// --------------------------signalR Socket相关
/// Socket长连接
Future<void> 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();
))
// 线410 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<MeetingRoomUser> meetingRoomUsers = (listDynamic as List<dynamic>).map((e) => MeetingRoomUser.fromJson((e as Map<String,dynamic>))).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){