fix:调整中继数据的判断方式

This commit is contained in:
liyi 2024-12-10 17:27:37 +08:00
parent 92f3b90cb7
commit 9cfccf38c7
7 changed files with 65 additions and 24 deletions

View File

@ -10,6 +10,7 @@ import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_accept.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_data.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_expect.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_hangup.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_ping.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_reject.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_request.pb.dart';
@ -209,6 +210,30 @@ class MessageCommand {
return _hexToBytes(serializedBytesString);
}
//
static List<int> talkHangupMessage({
required String FromPeerId,
required String ToPeerId,
}) {
final talkHangup = TalkHangup();
final payload = talkHangup.writeToBuffer();
ScpMessage message = ScpMessage(
ProtocolFlag: ProtocolFlagConstant.scp01,
MessageType: MessageTypeConstant.Req,
MessageId: 1,
SpTotal: 0,
SpIndex: 0,
FromPeerId: FromPeerId,
ToPeerId: ToPeerId,
Payload: payload,
PayloadCRC: calculationCrc(payload),
PayloadLength: payload.length,
PayloadType: PayloadTypeConstant.talkHangup,
);
String serializedBytesString = message.serialize();
return _hexToBytes(serializedBytesString);
}
//
static List<int> talkDataMessage({
required String FromPeerId,

View File

@ -10,7 +10,6 @@ import 'package:star_lock/talk/startChart/proto/generic.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_data.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_data.pbserver.dart';
import '../../start_chart_manage.dart';
class UdpTalkDataHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@ -25,11 +24,11 @@ class UdpTalkDataHandler extends ScpMessageBaseHandle
@override
void handleRealTimeData(ScpMessage scpMessage) {
print('收到音视频数据:$scpMessage');
// print('收到音视频数据:$scpMessage');
if (scpMessage.Payload != null) {
final TalkData talkData = scpMessage.Payload;
//
_handleTalkData(talkData: talkData);
// _handleTalkData(talkData: talkData);
//
talkDataOverTimeTimerManager.receiveMessage();
}

View File

@ -10,16 +10,22 @@ import '../../start_chart_manage.dart';
class UdpTalkHangUpHandler extends ScpMessageBaseHandle
implements ScpMessageHandler {
@override
void handleReq(ScpMessage scpMessage) {
// TODO:
//
print('收到通话中挂断请求');
startChartManage.sendGenericRespSuccessMessage(
ToPeerId: scpMessage.FromPeerId!,
FromPeerId: scpMessage.ToPeerId!,
PayloadType: scpMessage.PayloadType!,
);
talkStatus.setEnd();
}
@override
void handleResp(ScpMessage scpMessage) {
// TODO:
print('收到通话中挂断回复');
talkStatus.setEnd();
}
@override
@ -28,8 +34,7 @@ class UdpTalkHangUpHandler extends ScpMessageBaseHandle
}
@override
void handleRealTimeData(ScpMessage scpMessage
) {
void handleRealTimeData(ScpMessage scpMessage) {
// TODO: implement handleRealTimeData
}
}

View File

@ -19,6 +19,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
void handleResp(ScpMessage scpMessage) {
//
talkStatus.setRejected();
print('收到接听拒绝回复');
}
@override

View File

@ -28,11 +28,11 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
startChartManage.FromPeerId = scpMessage.ToPeerId!;
startChartManage.ToPeerId = scpMessage.FromPeerId!;
//
// _talkRequestEvent(talkObjectName: talkReq.callerName);
_talkRequestEvent(talkObjectName: talkReq.callerName);
Future.delayed(Duration(seconds: 1), () {
startChartManage.sendTalkAcceptMessage();
});
// Future.delayed(Duration(seconds: 1), () {
// startChartManage.sendTalkAcceptMessage();
// });
}
@override
@ -45,14 +45,10 @@ class UdpTalkRequestHandler extends ScpMessageBaseHandle
}
@override
void handleInvalidReq(ScpMessage scpMessage) {
}
void handleInvalidReq(ScpMessage scpMessage) {}
@override
void handleRealTimeData(ScpMessage scpMessage) {
}
void handleRealTimeData(ScpMessage scpMessage) {}
//
void _talkRequestEvent({required String talkObjectName}) {

View File

@ -129,10 +129,9 @@ class StartChartManage {
relayPeerId = data?.peerID ?? '';
ToPeerId = relayPeerId;
_log(text: '中继信息----》${relayInfoEntity}');
}else{
} else {
_log(text: '未查询到中继信息----》');
}
}
void closeUdpSocket() {
@ -306,6 +305,15 @@ class StartChartManage {
await _sendMessage(message: message);
}
//
Future<void> sendTalkHangupMessage() async {
final message = MessageCommand.talkHangupMessage(
ToPeerId: ToPeerId,
FromPeerId: FromPeerId,
);
await _sendMessage(message: message);
}
// 线
Future<void> reStartOnlineStartChartServer() async {
if (isOnlineStartChartServer) {
@ -657,9 +665,9 @@ class StartChartManage {
//
_handleUdpResultData(deserialize);
}
// if (deserialize.PayloadType != PayloadTypeConstant.heartbeat) {
// _log(text: 'Udp收到结构体数据---》$deserialize');
// }
if (deserialize.PayloadType != PayloadTypeConstant.heartbeat) {
_log(text: 'Udp收到结构体数据---》$deserialize');
}
}
} catch (e) {
_log(text: '❌ Udp result data error ----> $e');

View File

@ -11,6 +11,7 @@ enum TalkStatus {
notTalkData, //
notTalkPing, //
error, //
end, //
}
class StartChartTalkStatus {
@ -101,4 +102,10 @@ class StartChartTalkStatus {
_setStatus(TalkStatus.error);
// "error"
}
///
void setEnd() {
_setStatus(TalkStatus.end);
// "error"
}
}