Qt WebSockets 개요
Qt WebSockets 를 사용하면 웹소켓 인식 애플리케이션을 구축할 수 있습니다. 기존 웹 인프라를 이용한 양방향 통신을 위한 더 나은 대안으로 IETF(인터넷 엔지니어링 태스크포스)에서 제공하는 WebSocket 프로토콜에 대한 구현을 제공합니다.
기존에는 양방향 통신이나 푸시 알림이 필요한 웹 애플리케이션은 시중에 나와 있는 HTTP 기반 솔루션 중 하나를 사용해야 했습니다. 이러한 솔루션은 폴링, 롱폴링, 스트리밍 등 다양한 기술을 사용하여 이러한 사용 사례를 위해 설계되지 않은 HTTP 프로토콜의 한계를 극복했습니다. 그 결과 네트워크 지연 시간이 길어지고 불필요한 데이터 교환이 발생했으며 데이터가 오래되거나 낡았습니다. IETF에서 제공하는 WebSocket은 이러한 문제를 상당 부분 극복하는 데 도움이 됩니다.
어떻게 작동하나요?
그림에서 볼 수 있듯이 WebSocket 기반 솔루션은 클라이언트 측과 서버 측으로 구성됩니다. 웹소켓에 대한 기본 클라이언트 측 지원은 구글 크롬, 인터넷 익스플로러, 사파리 등 대부분의 인기 웹 브라우저에서 사용할 수 있습니다. 웹소켓에 대한 서버 측 지원은 양방향 통신을 가능하게 하는 완벽한 솔루션입니다. 기본 웹소켓을 지원하는 모든 브라우저에서는 HTML5 웹소켓 API를 사용하여 간단한 HTML 및 JavaScript 기반 클라이언트 애플리케이션을 실행할 수 있습니다.
웹소켓 연결은 초기 HTTP 호환 핸드셰이크로 시작되며, 이는 이전 버전과의 호환성을 보장하여 웹소켓 연결이 기본 HTTP(80) 및 HTTPS(443) 포트를 공유할 수 있도록 합니다. 핸드셰이크가 성공하면 두 엔티티 중 하나가 연결을 종료할 때까지 데이터 교환을 위해 연결이 열려 있습니다.
웹소켓 프로토콜은 각각 비보안 및 보안 웹소켓 요청을 나타내기 위해 ws
: 및 wss
: URL 스키마를 사용합니다. 초기 핸드셰이크 중에 프록시 서버가 감지되면 프로토콜은 프록시에 HTTP CONNECT
문을 발행하여 터널을 설정하려고 시도합니다. 프록시를 처리하는 터널 접근 방식은 요청 유형에 관계없이 사용되지만 보안 연결에서 TLS(전송 계층 보안)를 사용하는 것이 더 효과적이라는 것이 입증되었습니다.
일반적인 사용 사례
WebSocket은 다음과 같은 시나리오에 가장 적합합니다,
- 제공되는 데이터가 최신 상태여야 합니다,
- 네트워크 지연 시간이 짧고 데이터 교환을 최소화하는 것이 중요한 시나리오에 가장 적합합니다.
기존 접근 방식으로는 이러한 목표를 달성하기 어려운 몇 가지 예로는 인스턴트 메시징, 온라인 게임, 온라인 주식 거래 등이 있습니다.
역할 Qt WebSockets
Qt WebSockets 모듈은 웹소켓 기반 서버 및 클라이언트 애플리케이션을 개발하기 위한 API를 제공합니다. 이러한 API를 사용할 수 있는 예로는 주식 데이터를 제공하는 서버 애플리케이션과 일부 주식의 가격 변동이 있을 때 푸시 알림을 등록하는 클라이언트 애플리케이션을 들 수 있습니다.
이 모듈은 C++ 및 QML 버전의 API를 모두 제공하므로 필요에 맞는 대안을 선택할 수 있습니다.
Qt WebSockets 클라우드 서비스 사용
클라이언트 애플리케이션은 일반적으로 외부 서비스에 데이터를 의존합니다. 이러한 서비스 제공업체의 대부분은 아직 웹소켓을 지원하지 않으므로 결국 웹소켓 인식 서버 애플리케이션을 개발하여 그 간극을 메워야 합니다. 클라우드 서비스와 같은 엔터프라이즈 웹소켓 게이트웨이 서비스에서 서버를 실행하면 이러한 서비스를 호스팅하는 데 필요한 인프라를 유지 관리해야 하는 번거로움을 피할 수 있습니다.
대부분의 클라우드 서비스는 클라우드에서 서버 애플리케이션의 인스턴스를 배포하고 실행할 수 있는 서비스형 플랫폼(PaaS) 백엔드를 제공합니다. 클라이언트 애플리케이션은 웹소켓 URL을 사용하여 실행 중인 서버에 연결하고 데이터를 수신할 수 있습니다.
관련 정보
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.