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_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,
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ class UdpTalkRejectHandler extends ScpMessageBaseHandle
|
|||||||
void handleResp(ScpMessage scpMessage) {
|
void handleResp(ScpMessage scpMessage) {
|
||||||
// 收到接听拒绝回复
|
// 收到接听拒绝回复
|
||||||
talkStatus.setRejected();
|
talkStatus.setRejected();
|
||||||
|
print('收到接听拒绝回复');
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@ -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}) {
|
||||||
|
|||||||
@ -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');
|
||||||
|
|||||||
@ -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" 状态的逻辑
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user