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_accept.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_data.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_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_ping.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_reject.pb.dart'; import 'package:star_lock/talk/startChart/proto/talk_reject.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_request.pb.dart'; import 'package:star_lock/talk/startChart/proto/talk_request.pb.dart';
@ -209,6 +210,30 @@ class MessageCommand {
return _hexToBytes(serializedBytesString); 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({ static List<int> talkDataMessage({
required String FromPeerId, 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.pb.dart';
import 'package:star_lock/talk/startChart/proto/talk_data.pbserver.dart'; import 'package:star_lock/talk/startChart/proto/talk_data.pbserver.dart';
import '../../start_chart_manage.dart';
class UdpTalkDataHandler extends ScpMessageBaseHandle class UdpTalkDataHandler extends ScpMessageBaseHandle
implements ScpMessageHandler { implements ScpMessageHandler {
@ -25,11 +24,11 @@ class UdpTalkDataHandler extends ScpMessageBaseHandle
@override @override
void handleRealTimeData(ScpMessage scpMessage) { void handleRealTimeData(ScpMessage scpMessage) {
print('收到音视频数据:$scpMessage'); // print('收到音视频数据:$scpMessage');
if (scpMessage.Payload != null) { if (scpMessage.Payload != null) {
final TalkData talkData = scpMessage.Payload; final TalkData talkData = scpMessage.Payload;
// //
_handleTalkData(talkData: talkData); // _handleTalkData(talkData: talkData);
// //
talkDataOverTimeTimerManager.receiveMessage(); talkDataOverTimeTimerManager.receiveMessage();
} }

View File

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

View File

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

View File

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

View File

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

View File

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