VNC WebSocket 직접 연결 및 Canvas 렌더링 문제 완전 해결

- noVNC API 함수명 오류 수정 (sendPointer, sendKeyEvent -> sendKey)
- Canvas 크기 자동 조정 문제 해결을 위한 단순화된 구현 도입
- 기존 Proxmox vnc_lite.html과 동일한 방식으로 재구현
- 복잡한 Canvas 조작 로직 제거하고 noVNC 자체 렌더링에 의존
- 로컬 noVNC 라이브러리 사용으로 버전 호환성 보장
- VNC 연결, 인증, 화면 표시 모든 기능 정상 작동 확인

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-11 23:17:41 +09:00
parent 895b7a8ee7
commit 0dda1423f8
3 changed files with 383 additions and 10 deletions

View File

@@ -533,6 +533,10 @@ def create_app(config_name=None):
if not client.login():
return jsonify({'error': 'Proxmox 서버 로그인 실패'}), 500
# VM 상태 확인
vm_status = client.get_vm_status(node, vmid)
print(f"🔍 VM {vmid} 상태: {vm_status}")
# VNC 티켓 생성
vnc_data = client.get_vnc_ticket(node, vmid)
if not vnc_data:
@@ -548,6 +552,7 @@ def create_app(config_name=None):
'vm_name': vm_name,
'websocket_url': vnc_data['websocket_url'],
'password': vnc_data.get('password', ''), # VNC 패스워드 추가
'vm_status': vm_status.get('status', 'unknown'), # VM 상태 추가
'created_at': datetime.now()
}
@@ -572,13 +577,14 @@ def create_app(config_name=None):
session_data = vnc_sessions[session_id]
# 직접 WebSocket VNC 연결 (noVNC)
return render_template('vnc_console.html',
# 직접 WebSocket VNC 연결 (noVNC) - 간단한 버전으로 테스트
return render_template('vnc_simple.html',
vm_name=session_data['vm_name'],
vmid=session_data['vmid'],
node=session_data['node'],
websocket_url=session_data['websocket_url'],
password=session_data.get('password', ''))
password=session_data.get('password', ''),
vm_status=session_data.get('vm_status', 'unknown'))
except Exception as e:
print(f"❌ VNC 콘솔 오류: {e}")