← 홈으로![]()
2026 · 개인 · 비공개
RemoteDesk
휴대폰에서 Windows PC를 WebRTC로 원격 제어
배경
소파에서 휴대폰으로 방 안 PC를 조작하고 싶었습니다. 기존 원격 데스크톱은 계정·중계 서버·설치 과정이 무거워서, 내 PC와 내 폰 사이에만 필요한 최소 구성으로 직접 만들었습니다.
무엇을 만들었나
- 호스트: .NET 9 라이브러리(RemoteDesk.Core) + WPF 트레이 앱 + 콘솔 CLI(진단 프로브 포함).
- 시그널링: Node.js WebSocket 릴레이. 같은 포트에서 브라우저 뷰어도 서빙합니다.
- 뷰어: Kotlin 안드로이드 앱과 브라우저 뷰어(참조 구현).
- 조작: 직접 터치(누른 자리 클릭)와 트랙패드(상대 이동) 두 모드. 탭은 좌클릭, 길게 누르면 우클릭, 두 손가락은 스크롤, 드래그는 버튼을 누른 채 이동. Ctrl·Alt·Shift·Win은 눌린 상태로 고정됐다가 다음 입력에서 함께 발동합니다.
기술적 결정
- 하드웨어 H.264 + WebRTC: 지연을 줄이려 소프트웨어 인코딩 대신 GPU 인코더를 쓰고, 영상은 WebRTC 미디어 채널, 입력은 데이터 채널로 보냅니다.
- 파이프라인은 하나: 캡처·인코딩은 시청자 수와 무관하게 한 개만 돌고, 첫 시청자가 붙을 때 시작해 마지막 시청자가 나가면 멈춥니다. 대기 중인 호스트는 GPU를 쓰지 않습니다.
- 설정은
%APPDATA%\RemoteDesk\config.json에 저장되고, 커맨드라인 인자가 설정 파일을 덮어씁니다. 창을 닫아도 트레이에 남습니다.
실측
로컬, 2560×1440 소스 기준으로 1920×1080 30fps, 약 2.1 Mbps, 패킷 손실 0, RTT 15~31 ms.
상태
M3: 브라우저를 열고 host id를 넣으면 PC 화면이 보이고 터치로 조작됩니다. 브라우저 뷰어가 기준 구현이고, 안드로이드 뷰어는 같은 프로토콜을 따릅니다.