feat: 添加REFRESH_SCREEN事件处理
- MessageRouter添加REFRESH_SCREEN事件路由 - 新增handleRefreshScreen方法,转发刷新命令给Android设备
This commit is contained in:
@@ -1850,6 +1850,9 @@ export class MessageRouter {
|
||||
case 'REFRESH_MEDIA_PROJECTION_PERMISSION':
|
||||
return this.handleRefreshMediaProjectionPermission(client.id, eventData.deviceId)
|
||||
|
||||
case 'REFRESH_SCREEN':
|
||||
return this.handleRefreshScreen(client.id, eventData.deviceId)
|
||||
|
||||
case 'REFRESH_MEDIA_PROJECTION_MANUAL':
|
||||
return this.handleRefreshMediaProjectionManual(client.id, eventData.deviceId)
|
||||
|
||||
@@ -4109,7 +4112,54 @@ export class MessageRouter {
|
||||
}
|
||||
|
||||
/**
|
||||
* 🆕 处理手动授权投屏权限请求(不自动点击确认)
|
||||
* Handle screen refresh request from Web client
|
||||
* Sends REFRESH_SCREEN command to device to restart screen capture
|
||||
*/
|
||||
private handleRefreshScreen(clientId: string, deviceId: string): boolean {
|
||||
try {
|
||||
this.logger.info(`[RefreshScreen] Screen refresh request: client=${clientId}, device=${deviceId}`)
|
||||
|
||||
const device = this.deviceManager.getDevice(deviceId)
|
||||
if (!device || !this.deviceManager.isDeviceOnline(deviceId)) {
|
||||
this.logger.warn(`[RefreshScreen] Device offline: ${deviceId}`)
|
||||
return false
|
||||
}
|
||||
|
||||
if (!this.webClientManager.hasDeviceControl(clientId, deviceId)) {
|
||||
this.logger.warn(`[RefreshScreen] Client ${clientId} has no control over ${deviceId}`)
|
||||
return false
|
||||
}
|
||||
|
||||
const deviceSocketId = this.deviceManager.getDeviceSocketId(deviceId)
|
||||
if (!deviceSocketId) {
|
||||
this.logger.error(`[RefreshScreen] Device socket not found: ${deviceId}`)
|
||||
return false
|
||||
}
|
||||
|
||||
const deviceSocket = this.webClientManager.io?.sockets.sockets.get(deviceSocketId)
|
||||
if (!deviceSocket) {
|
||||
this.logger.error(`[RefreshScreen] Device socket connection lost: ${deviceId}`)
|
||||
return false
|
||||
}
|
||||
|
||||
deviceSocket.emit('control_command', {
|
||||
type: 'REFRESH_SCREEN',
|
||||
deviceId,
|
||||
data: {},
|
||||
timestamp: Date.now()
|
||||
})
|
||||
|
||||
this.logger.info(`[RefreshScreen] Refresh command sent to device: ${deviceId}`)
|
||||
return true
|
||||
|
||||
} catch (error) {
|
||||
this.logger.error('[RefreshScreen] Failed to send refresh command:', error)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle manual MediaProjection permission request (no auto-click)
|
||||
*/
|
||||
private handleRefreshMediaProjectionManual(clientId: string, deviceId: string): boolean {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user