feat: 增加信令自动重连保活与控制端视频录制

- 信令客户端增加心跳保活与指数退避自动重连机制
- 服务端优化传输异常日志级别,客户端断开不再报错
- 被控端信令断开时保持服务运行并自动重连
- Flutter 控制端增加远程视频录制功能,兼容标准 WebRTC 模式切换
- 各端连接按钮增加“连接中”状态防重复点击
This commit is contained in:
TongTongStudio
2026-07-30 00:40:22 +08:00
parent 7f545359d9
commit e831ef2795
14 changed files with 444 additions and 27 deletions

View File

@@ -26,6 +26,7 @@ export const store = reactive({
protoReady: false,
signalingConnected: false,
signalingConnecting: false,
registered: false,
rtcConnected: false,
dataChannelOpen: false,
@@ -60,20 +61,26 @@ export function connectSignaling() {
const deviceId = store.deviceId.trim();
if (!deviceId) { store.error = '请填写本机设备 ID'; return; }
store.signalingConnecting = true;
signaling = new SignalingClient({
serverUrl: store.serverUrl.trim(),
deviceId,
onConnected: () => {
store.signalingConnected = true;
store.signalingConnecting = false;
store.statusText = '已连接信令服务器';
refreshDevices();
},
onDisconnected: () => {
store.signalingConnected = false;
store.signalingConnecting = false;
store.registered = false;
store.statusText = '已断开信令连接';
},
onError: (e) => { store.error = '信令错误: ' + e; },
onError: (e) => {
store.signalingConnecting = false;
store.error = '信令错误: ' + e;
},
onMessage: handleSignalMessage,
});
signaling.connect();
@@ -172,6 +179,7 @@ export function disconnectSignaling() {
disconnectDevice();
if (signaling) { signaling.disconnect(); signaling = null; }
store.signalingConnected = false;
store.signalingConnecting = false;
store.registered = false;
store.controlledDevices = [];
}