noVNC: HTML 5 Canvas와 WebSocket 기반의 VNC 클라이언트

HTML 5는 계속 발전 중인 기술이며, 하루가 다르게 발전하고 있습니다. 그리고 이제 여기에 한층 더 성숙한 기술을 추가하는 모습이 보입니다. 바로, WebSocket이 그 주인공입니다. 이제까지 우리는 AJAX 기술을 통하여 정형화된 HTML 및 XML을 다루는 것에 익숙해져 있지만, WebSocket은 HTML 5를 더 이상 UI 전용 마크업 언어가 아닌 하나의 소프트웨어 개발 도구로 이해할 수 있도록 도와줍니다.


noVNC가 사용하는 WebSocket의 클라이언트 측 구현은 아직까지 DRAFT 단계에 있으며, 주요 웹 브라우저들은 아직 이 기술을 정확하게 지원하지 않습니다. 실제 소스 코드를 분석해보면 WebSocket의 기능을 대리로 구현하는 Rich Internet Application 모듈이 들어있고 Adobe Flash 기반인 것을 확인할 수 있습니다. 이 모듈은 Hiroshi Ichikawa (http://gimite.net/en/)에 의하여 작성된 프로토타입 버전의 모듈로 관심있으신 분들께서는 한 번 분석해보시는 것도 괜찮을 것입니다.


또한 서버의 경우, W3C의 DRAFT를 따라 기본적인 요구 사항을 구현하도록 WebSocket 전용 서버 코드를 작성하였고 noVNC는 이 서버를 경유하여 실제 VNC 서버와 상호 작용하는 것으로 되어있습니다. 즉, WebSocket은 일반 TCP/IP 소켓과는 달리, 별도의 중개 서버가 추가로 필요함을 의미합니다. noVNC에 포함된 소스 코드는 Python으로 구동되고, 성능을 내어야 할 필요가 있는 부분을 C 언어로 작성하였습니다.


아래의 42초 분량의 Demonstration 동영상은 noVNC의 동작 모습을 촬영한 것입니다.


noVNC는 현재 Google Chrome Browser에 최적화되어 있습니다만, 다른 HTML 5 지원 브라우저에서도 조만간 사용 가능해질 것으로 보입니다. noVNC는 github에 호스팅되어있고, 자세한 내용은 http://kanaka.github.com/noVNC 에서 확인 가능합니다.

댓글 남기기