fix:挂断消息改为使用定时器重发机制
This commit is contained in:
parent
7d65c45fa9
commit
017b18600b
@ -36,6 +36,7 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
|
|||||||
EasyLoading.showToast('已挂断'.tr);
|
EasyLoading.showToast('已挂断'.tr);
|
||||||
startChartManage.stopSendingRbcuInfoMessages();
|
startChartManage.stopSendingRbcuInfoMessages();
|
||||||
startChartManage.stopSendingRbcuProBeMessages();
|
startChartManage.stopSendingRbcuProBeMessages();
|
||||||
|
startChartManage.stopTalkHangupMessageTimer();
|
||||||
Get.back();
|
Get.back();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -53,6 +54,7 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
|
|||||||
talkDataOverTimeTimerManager.cancel();
|
talkDataOverTimeTimerManager.cancel();
|
||||||
startChartManage.stopSendingRbcuInfoMessages();
|
startChartManage.stopSendingRbcuInfoMessages();
|
||||||
startChartManage.stopSendingRbcuProBeMessages();
|
startChartManage.stopSendingRbcuProBeMessages();
|
||||||
|
startChartManage.stopTalkHangupMessageTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -33,6 +33,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
|
|||||||
talkDataOverTimeTimerManager.cancel();
|
talkDataOverTimeTimerManager.cancel();
|
||||||
startChartManage.stopSendingRbcuInfoMessages();
|
startChartManage.stopSendingRbcuInfoMessages();
|
||||||
startChartManage.stopSendingRbcuProBeMessages();
|
startChartManage.stopSendingRbcuProBeMessages();
|
||||||
|
startChartManage.stopTalkRejectMessageTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -47,6 +48,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
|
|||||||
talkDataOverTimeTimerManager.cancel();
|
talkDataOverTimeTimerManager.cancel();
|
||||||
startChartManage.stopSendingRbcuInfoMessages();
|
startChartManage.stopSendingRbcuInfoMessages();
|
||||||
startChartManage.stopSendingRbcuProBeMessages();
|
startChartManage.stopSendingRbcuProBeMessages();
|
||||||
|
startChartManage.stopTalkRejectMessageTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -30,7 +30,7 @@ class TalkDataOverTimeTimerManager {
|
|||||||
static void _handleTalkeDataOverTime() {
|
static void _handleTalkeDataOverTime() {
|
||||||
EasyLoading.showToast('通话连接失败'.tr, duration: 2000.milliseconds);
|
EasyLoading.showToast('通话连接失败'.tr, duration: 2000.milliseconds);
|
||||||
// 没有通话数据,发送挂断数据
|
// 没有通话数据,发送挂断数据
|
||||||
StartChartManage().sendTalkHangupMessage();
|
StartChartManage().startTalkHangupMessageTimer();
|
||||||
StartChartManage().stopTalkPingMessageTimer();
|
StartChartManage().stopTalkPingMessageTimer();
|
||||||
StartChartManage().stopTalkExpectMessageTimer();
|
StartChartManage().stopTalkExpectMessageTimer();
|
||||||
StartChartManage().stopSendingRbcuInfoMessages();
|
StartChartManage().stopSendingRbcuInfoMessages();
|
||||||
|
|||||||
@ -36,7 +36,7 @@ class TalkePingOverTimeTimerManager {
|
|||||||
StartChartManage().stopTalkPingMessageTimer();
|
StartChartManage().stopTalkPingMessageTimer();
|
||||||
StartChartManage().stopTalkExpectMessageTimer();
|
StartChartManage().stopTalkExpectMessageTimer();
|
||||||
// 如果通话异常,则发送通话中挂断
|
// 如果通话异常,则发送通话中挂断
|
||||||
StartChartManage().sendTalkHangupMessage();
|
StartChartManage().startTalkHangupMessageTimer();
|
||||||
StartChartManage().stopSendingRbcuInfoMessages();
|
StartChartManage().stopSendingRbcuInfoMessages();
|
||||||
StartChartManage().stopSendingRbcuProBeMessages();
|
StartChartManage().stopSendingRbcuProBeMessages();
|
||||||
talkStatus.setNotTalkPing();
|
talkStatus.setNotTalkPing();
|
||||||
|
|||||||
@ -31,7 +31,7 @@ class TalkeRequestOverTimeTimerManager {
|
|||||||
talkStatus.status == TalkStatus.proactivelyCallWaitingAnswer) {
|
talkStatus.status == TalkStatus.proactivelyCallWaitingAnswer) {
|
||||||
EasyLoading.showToast('通话未接通,已挂断'.tr, duration: 2000.milliseconds);
|
EasyLoading.showToast('通话未接通,已挂断'.tr, duration: 2000.milliseconds);
|
||||||
// 超时未接听,发送挂断请求
|
// 超时未接听,发送挂断请求
|
||||||
StartChartManage().sendTalkRejectMessage();
|
StartChartManage().startTalkRejectMessageTimer();
|
||||||
StartChartManage().stopSendingRbcuInfoMessages();
|
StartChartManage().stopSendingRbcuInfoMessages();
|
||||||
StartChartManage().stopSendingRbcuProBeMessages();
|
StartChartManage().stopSendingRbcuProBeMessages();
|
||||||
talkStatus.setInitializationCompleted();
|
talkStatus.setInitializationCompleted();
|
||||||
|
|||||||
@ -97,6 +97,9 @@ class StartChartManage {
|
|||||||
Timer? rbcuInfoTimer; // p2p地址交换定时器
|
Timer? rbcuInfoTimer; // p2p地址交换定时器
|
||||||
Timer? rbcuProbeTimer; // p2p打洞包
|
Timer? rbcuProbeTimer; // p2p打洞包
|
||||||
Timer? rbcuConfirmTimer; // p2p打洞确认包
|
Timer? rbcuConfirmTimer; // p2p打洞确认包
|
||||||
|
Timer? talkHangupTimer; // 添加挂断消息定时器
|
||||||
|
Timer? talkRejectTimer; // 添加拒绝接听定时器
|
||||||
|
|
||||||
String _rbcuSessionId = ''; // p2p SessionId
|
String _rbcuSessionId = ''; // p2p SessionId
|
||||||
Timer? talkRequestTimer; // 对讲请求定时器
|
Timer? talkRequestTimer; // 对讲请求定时器
|
||||||
final int maxAttempts = 15; // 最大执行次数
|
final int maxAttempts = 15; // 最大执行次数
|
||||||
@ -570,14 +573,23 @@ class StartChartManage {
|
|||||||
stopTalkExpectMessageTimer();
|
stopTalkExpectMessageTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送拒绝接听消息
|
void _sendTalkRejectMessage() {
|
||||||
void sendTalkRejectMessage() async {
|
|
||||||
final message = MessageCommand.talkRejectMessage(
|
final message = MessageCommand.talkRejectMessage(
|
||||||
ToPeerId: ToPeerId,
|
ToPeerId: ToPeerId,
|
||||||
FromPeerId: FromPeerId,
|
FromPeerId: FromPeerId,
|
||||||
MessageId: MessageCommand.getNextMessageId(ToPeerId, increment: true),
|
MessageId: MessageCommand.getNextMessageId(ToPeerId, increment: true),
|
||||||
);
|
);
|
||||||
await _sendMessage(message: message);
|
_sendMessage(message: message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送拒绝接听消息
|
||||||
|
void startTalkRejectMessageTimer() async {
|
||||||
|
talkRejectTimer ??= Timer.periodic(
|
||||||
|
Duration(seconds: _defaultIntervalTime),
|
||||||
|
(Timer timer) async {
|
||||||
|
_sendTalkRejectMessage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// 设置状态为拒绝
|
// 设置状态为拒绝
|
||||||
StartChartTalkStatus.instance.setRejected();
|
StartChartTalkStatus.instance.setRejected();
|
||||||
@ -652,14 +664,24 @@ class StartChartManage {
|
|||||||
// _log(text: '发送通话保持');
|
// _log(text: '发送通话保持');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送通话中挂断消息
|
void _sendTalkHangupMessage() async {
|
||||||
Future<void> sendTalkHangupMessage() async {
|
|
||||||
final message = MessageCommand.talkHangupMessage(
|
final message = MessageCommand.talkHangupMessage(
|
||||||
ToPeerId: ToPeerId,
|
ToPeerId: ToPeerId,
|
||||||
FromPeerId: FromPeerId,
|
FromPeerId: FromPeerId,
|
||||||
MessageId: MessageCommand.getNextMessageId(ToPeerId, increment: true),
|
MessageId: MessageCommand.getNextMessageId(ToPeerId, increment: true),
|
||||||
);
|
);
|
||||||
await _sendMessage(message: message);
|
await _sendMessage(message: message);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送通话中挂断消息
|
||||||
|
// 启动定时发送挂断消息
|
||||||
|
void startTalkHangupMessageTimer() {
|
||||||
|
talkHangupTimer ??= Timer.periodic(
|
||||||
|
Duration(seconds: _defaultIntervalTime),
|
||||||
|
(Timer timer) async {
|
||||||
|
_sendTalkHangupMessage();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// 设置状态为通话中挂断
|
// 设置状态为通话中挂断
|
||||||
StartChartTalkStatus.instance.setHangingUpDuring();
|
StartChartTalkStatus.instance.setHangingUpDuring();
|
||||||
@ -676,6 +698,18 @@ class StartChartManage {
|
|||||||
talkDataOverTimeTimerManager.cancel();
|
talkDataOverTimeTimerManager.cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 停止发送挂断消息
|
||||||
|
void stopTalkHangupMessageTimer() {
|
||||||
|
talkHangupTimer?.cancel();
|
||||||
|
talkHangupTimer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 停止发送挂断消息
|
||||||
|
void stopTalkRejectMessageTimer() {
|
||||||
|
talkRejectTimer?.cancel();
|
||||||
|
talkRejectTimer = null;
|
||||||
|
}
|
||||||
|
|
||||||
// 重新上线
|
// 重新上线
|
||||||
Future<void> reStartOnlineStartChartServer() async {
|
Future<void> reStartOnlineStartChartServer() async {
|
||||||
if (isOnlineStarChartServer) {
|
if (isOnlineStarChartServer) {
|
||||||
@ -1131,8 +1165,6 @@ class StartChartManage {
|
|||||||
|
|
||||||
/// 销毁资源
|
/// 销毁资源
|
||||||
void destruction() async {
|
void destruction() async {
|
||||||
// 发送挂断消息
|
|
||||||
sendTalkHangupMessage();
|
|
||||||
isOnlineStarChartServer = false;
|
isOnlineStarChartServer = false;
|
||||||
// 停止发送心跳消息
|
// 停止发送心跳消息
|
||||||
stopHeartbeat();
|
stopHeartbeat();
|
||||||
|
|||||||
@ -71,10 +71,10 @@ class TalkViewLogic extends BaseGetXController {
|
|||||||
void udpHangUpAction() async {
|
void udpHangUpAction() async {
|
||||||
if (state.talkStatus.value == TalkStatus.answeredSuccessfully) {
|
if (state.talkStatus.value == TalkStatus.answeredSuccessfully) {
|
||||||
// 如果是通话中就挂断
|
// 如果是通话中就挂断
|
||||||
StartChartManage().sendTalkHangupMessage();
|
StartChartManage().startTalkHangupMessageTimer();
|
||||||
} else {
|
} else {
|
||||||
// 拒绝
|
// 拒绝
|
||||||
StartChartManage().sendTalkRejectMessage();
|
StartChartManage().startTalkRejectMessageTimer();
|
||||||
}
|
}
|
||||||
Get.back();
|
Get.back();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user