feat(webrtc): 添加公共ICE服务器支持和优化HID延迟

- 重构ICE配置:将TURN配置改为统一的ICE配置,支持STUN和多TURN URL
- 添加公共ICE服务器:类似RustDesk,用户留空时使用编译时配置的公共服务器
- 优化DataChannel HID消息:使用tokio::spawn立即处理,避免依赖webrtc-rs轮询
- 添加WebRTCReady事件:客户端等待此事件后再建立连接
- 初始化时启动音频流,确保WebRTC可订阅
- 移除多余的trace/debug日志减少开销
- 更新前端配置界面支持公共ICE服务器显示
This commit is contained in:
mofeng-git
2026-01-04 15:06:08 +08:00
parent 0c82d1a840
commit 9ab3d052f9
24 changed files with 766 additions and 258 deletions

View File

@@ -283,12 +283,12 @@ export default {
fullscreen: 'Fullscreen',
exitFullscreen: 'Exit Fullscreen',
screenshot: 'Screenshot',
reconnect: 'Reconnect',
reconnect: 'Refresh Page',
noVideo: 'No video signal',
connecting: 'Connecting...',
streamOffline: 'Stream offline',
connectionFailed: 'Connection Failed',
connectionFailedDesc: 'Unable to connect to video stream, please check device status',
connectionFailedDesc: 'Unable to connect to video stream, please refresh page or check device status',
videoRestarting: 'Video stream is restarting',
deviceSwitching: 'Switching video device...',
configChanging: 'Applying new configuration...',
@@ -570,16 +570,18 @@ export default {
// WebRTC / ICE
webrtcSettings: 'WebRTC Settings',
webrtcSettingsDesc: 'Configure STUN/TURN servers for NAT traversal',
usingPublicIceServers: 'Using public ICE servers',
publicIceServersHint: 'Leave empty to use built-in public STUN/TURN servers for NAT traversal',
stunServer: 'STUN Server',
stunServerPlaceholder: 'stun:stun.l.google.com:19302',
stunServerHint: 'STUN server for NAT traversal (e.g., stun:stun.l.google.com:19302)',
stunServerHint: 'Custom STUN server (leave empty to use public server)',
turnServer: 'TURN Server',
turnServerPlaceholder: 'turn:turn.example.com:3478',
turnServerHint: 'TURN relay server for restrictive networks (optional)',
turnServerHint: 'Custom TURN relay server (leave empty to use public server)',
turnUsername: 'TURN Username',
turnPassword: 'TURN Password',
turnPasswordConfigured: 'Password already configured. Leave empty to keep current password.',
turnCredentialsHint: 'Credentials for TURN server authentication',
turnCredentialsHint: 'Credentials for TURN server authentication (only needed for custom servers)',
iceConfigNote: 'Note: Changes require reconnecting the WebRTC session to take effect.',
},
virtualKeyboard: {
@@ -628,6 +630,7 @@ export default {
absolute: 'Absolute',
relative: 'Relative',
connection: 'Connection',
channel: 'Channel',
networkError: 'Network Error',
disconnected: 'Disconnected',
availability: 'Availability',
@@ -637,6 +640,7 @@ export default {
quality: 'Quality',
streaming: 'Streaming',
off: 'Off',
defaultDevice: 'Default',
notConnected: 'Not Connected',
connected: 'Connected',
image: 'Image',