fix:调整中继数据的判断方式
This commit is contained in:
parent
92f3b90cb7
commit
9cfccf38c7
@ -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,
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
|
||||
void handleResp(ScpMessage scpMessage) {
|
||||
// 收到接听拒绝回复
|
||||
talkStatus.setRejected();
|
||||
print('收到接听拒绝回复');
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -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}) {
|
||||
|
||||
@ -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');
|
||||
|
||||
@ -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" 状态的逻辑
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user