WebSocket 사용

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

이 주제에서는 Apigee 및 Apigee Hybrid와 함께 WebSockets을 사용하는 방법을 설명합니다.

소개

게임, 커뮤니케이션, 금융 거래, 기타 높은 처리량 활동 등 웹 상호작용이 실시간으로 발생해야 하는 상황이 많이 존재합니다.

WebSocket은 단일 TCP 연결을 통해 웹 클라이언트와 웹 서버 간의 전 이중 통신 채널을 제공하는 프로토콜입니다. WebSocket 프로토콜은 HTTP 프로토콜을 사용하여 클라이언트와 서버 간의 연결을 구축합니다. 연결이 구축되면 클라이언트와 서버는 WebSocket 프로토콜을 사용하여 데이터를 보내고 받습니다.

WebSockets 사양 및 프로토콜은 W3C에서 유지관리합니다.

Apigee의 WebSocket 지원

Apigee 및 Apigee Hybrid에서 환경 그룹은 환경에 대한 라우팅을 제공하고, API 프록시가 노출되는 호스트 이름을 정의합니다. 환경 그룹은 기본적으로 HTTP 및 WS 프로토콜을 모두 지원합니다. WebSockets를 사용하기 위해 특수 환경 그룹 또는 특수 구성을 만들 필요가 없습니다. 대신 Upgrade 요청 헤더를 포함하여 HTTP에서 WS로 프로토콜 업그레이드를 요청하는 것은 클라이언트의 몫입니다. API 프록시 엔드포인트에 대한 업그레이드 요청은 101 Switching Protocols 응답을 반환합니다. 추가 요청 및 응답은 개방형 WebSockets 연결을 통해 연결이 종료될 때까지 양방향으로 수행됩니다.

정책 지원

모든 정책은 핸드셰이크가 완료될 때까지(즉,HTTP 101 응답이 클라이언트에 반환될 때까지) 웹 소켓 프록시에서 작동하며 그 후에는 정책이 실행되지 않지만 핸드셰이크 전에 검증된 OAuth 토큰이 여전히 적용되고 토큰이 만료되거나 취소되면 연결이 끊어집니다.

연결 취소

다음 상황에서는 WebSockets 연결이 닫힙니다.

  • 프록시 엔드포인트가 API 키 또는 OAuth 토큰이 없는 요청을 수신
  • 프록시 엔드포인트가 만료되었거나 잘못된 API 키 또는 OAuth 토큰이 있는 요청을 수신
  • WebSockets 연결이 타임아웃됨

trace 및 분석 사용

다음 스크린샷에 표시된 것처럼 디버그 도구에서 각 WebSockets 연결에 대해 하나의 요청이 101 상태로 표시되는 것을 볼 수 있습니다.

디버그 도구의 101 상태로 표시된 요청

Apigee 분석 대시보드에는 각 WebSocket 세션에 대해 계산된 트래픽이 표시됩니다. 세션 중에 발생한 왕래 트래픽은 대시보드에 표시되지 않습니다.

샘플 WebSockets 애플리케이션

자세히 알아보려면 GitHub에서 작동하는 websocket-sample 애플리케이션을 참조하세요. 이 샘플은 WebSocket 연결을 통해 API 프록시를 호출하는 방법을 보여줍니다. 프록시는 Kubernetes 클러스터에 배포된 간단한 백엔드 대상 애플리케이션을 호출합니다.