feat: 增加密码连接
This commit is contained in:
@@ -14,6 +14,8 @@ class RemoteController {
|
||||
final String serverUrl;
|
||||
final String deviceId;
|
||||
final String targetDeviceId;
|
||||
final String? authType;
|
||||
final String? authValue;
|
||||
|
||||
late final SignalingClient _signaling;
|
||||
WebRtcController? _webRtc;
|
||||
@@ -47,10 +49,14 @@ class RemoteController {
|
||||
required this.serverUrl,
|
||||
required this.deviceId,
|
||||
required this.targetDeviceId,
|
||||
this.authType,
|
||||
this.authValue,
|
||||
});
|
||||
|
||||
/// 发起连接:先连接信令服务器,成功后建立 WebRTC 并创建 Offer。
|
||||
void connect() {
|
||||
void connect({String? authType, String? authValue}) {
|
||||
this.authType = authType;
|
||||
this.authValue = authValue;
|
||||
onStatusChanged?.call('状态: 正在连接信令服务器...');
|
||||
|
||||
_signaling = SignalingClient(serverUrl: serverUrl, deviceId: deviceId);
|
||||
@@ -74,6 +80,8 @@ class RemoteController {
|
||||
signaling: _signaling,
|
||||
deviceId: deviceId,
|
||||
targetDeviceId: targetDeviceId,
|
||||
authType: authType,
|
||||
authValue: authValue,
|
||||
);
|
||||
_webRtc!.onConnectionEstablished = () {
|
||||
onConnectionEstablished?.call();
|
||||
@@ -109,13 +117,24 @@ class RemoteController {
|
||||
case 'CONNECTION_REJECTED':
|
||||
case 'REQUEST_ERROR':
|
||||
case 'REQUEST_TIMEOUT':
|
||||
final text = message.payload ?? '连接请求失败';
|
||||
final text = _parseRejectReason(message.payload);
|
||||
onStatusChanged?.call('状态: $text');
|
||||
onConnectionRejected?.call(text);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// 解析拒绝原因:优先读取 JSON 中的 reason 字段,否则直接返回原文。
|
||||
String _parseRejectReason(String? payload) {
|
||||
if (payload == null || payload.isEmpty) return '连接请求失败';
|
||||
try {
|
||||
final map = jsonDecode(payload) as Map<String, dynamic>;
|
||||
final r = map['reason'];
|
||||
if (r is String && r.isNotEmpty) return r;
|
||||
} catch (_) {}
|
||||
return payload;
|
||||
}
|
||||
|
||||
void _startStats() {
|
||||
_statsTimer?.cancel();
|
||||
_statsTimer = Timer.periodic(const Duration(seconds: 1), (_) async {
|
||||
|
||||
Reference in New Issue
Block a user