F5 용어집

WebSocket

WebSocket은 인터넷에서 사용되는 통신 프로토콜 중 하나입니다. 웹 서버와 클라이언트 간의 양방향 통신이 가능합니다. 이 프로토콜은 IETF(인터넷 엔지니어링 태스크포스)에서 "RFC 6455"로 정의되어 있습니다.

웹은 원래 하이퍼텍스트를 지원하도록 설계되었지만, 이후 더욱 동적인 웹 애플리케이션을 지원하는 쪽으로 발전했습니다. 이를 달성하기 위해 일반적으로 채택되는 기술은 AJAX(비동기 JavaScript 및 XML)로, XMLHttpRequest를 사용하여 페이지 수준 업데이트 대신 웹 서버와 세부적인 데이터 교환을 용이하게 합니다. 이를 통해 더욱 반응성이 뛰어난 사용자 경험이 가능해졌습니다. 하지만 AJAX를 사용하면 모든 데이터 교환이 클라이언트 측에서 시작되어야 하므로 웹 서버가 클라이언트에 데이터를 사전에 푸시하기 어렵습니다.

이러한 한계를 해결하기 위해 Comet은 AJAX의 확장 기능으로 개발되었습니다. Comet은 "의도적으로 응답이 지연되는 요청을 생성"하여 웹 서버와의 HTTP 연결을 유지함으로써 서버가 정보를 푸시할 때마다 응답을 보낼 수 있도록 합니다. 하지만 Comet은 리소스 소모가 심하다는 문제가 있습니다.

WebSocket은 Comet을 개선하여 개발되었으며 HTML5로 제공됩니다. 서버와 클라이언트 간의 연결을 열어두고, 이 연결을 사용하여 지속적인 양방향 통신을 가능하게 합니다. 오늘날 주요 브라우저는 WebSocket을 지원합니다.

WebSocket 연결은 HTTP "Upgrade" 헤더 필드를 사용하여 HTTP를 통해 설정되며, 이를 통해 연결이 WebSocket으로 업그레이드됩니다. 웹사이트가 WebSocket을 지원하지 않는 HTTP 프록시를 사용하는 경우 연결이나 통신이 실패할 수 있으므로 적절한 구성이 필요합니다.