다음을 통해 공유


Azure Web PubSub 기본 개념

Azure Web PubSub 서비스를 사용하면 실시간 메시징 웹 애플리케이션을 빌드할 수 있습니다. 클라이언트는 표준 WebSocket 프로토콜을 사용하여 서비스에 연결하고, 서비스는 이러한 클라이언트를 관리할 수 있는 REST API 및 SDK를 노출합니다.

사용 약관

다음은 서비스에서 사용되는 몇 가지 중요한 용어입니다.

  • 연결: 클라이언트 또는 클라이언트 연결이라고도 하는 연결은 클라이언트와 Web PubSub 서비스 간의 논리적 관계입니다. '연결'을 통해 클라이언트와 서비스는 일련의 상태 저장 상호 작용에 참여합니다. 다른 프로토콜을 사용하는 연결은 다르게 동작할 수 있습니다. 예를 들어, 일부 연결은 네트워크 연결 기간으로 제한되는 반면 다른 연결은 클라이언트와 서비스 간의 여러 연속 네트워크 연결을 통해 확장될 수 있습니다.

  • 허브: 허브는 일련의 클라이언트 연결에 대한 논리적 개념입니다. 일반적으로 하나의 시나리오에 대해 하나의 허브를 사용합니다(예: 채팅 허브 또는 알림 허브). 클라이언트 연결이 연결되면 허브에 연결되고, 해당 수명 동안 해당 허브에 속합니다. 클라이언트 연결이 허브에 연결되면 허브가 존재합니다. 애플리케이션마다 서로 다른 허브 이름을 사용하여 하나의 Azure Web PubSub 서비스를 공유할 수 있습니다. 허브 수에는 엄격한 제한이 없지만 허브그룹에 비해 더 많은 서비스 부하를 사용합니다. 동적으로 생성하는 대신 미리 결정된 허브 집합을 사용하는 것이 좋습니다.

  • 그룹: 그룹은 허브에 대한 연결의 하위 집합입니다. 그룹에 클라이언트 연결을 추가하거나 원하는 경우 그룹에서 클라이언트 연결을 제거할 수 있습니다. 예를 들어 클라이언트가 채팅방에 참가하거나 채팅방에서 나가면 이 채팅방이 그룹일 수 있습니다. 클라이언트는 여러 그룹에 참가할 수 있으며, 한 그룹에 여러 클라이언트가 포함될 수 있습니다. 그룹은 그룹 "세션"과 같습니다. 그룹 세션은 누군가가 그룹에 조인하면 만들어지고 그룹에 아무도 없으면 세션이 사라집니다. 그룹에 보낸 메시지는 그룹에 연결된 모든 클라이언트에 전달됩니다.

  • 사용자: Web PubSub에 대한 연결은 한 명의 사용자에게 속할 수 있습니다. 단일 사용자가 여러 디바이스 또는 여러 브라우저 탭에서 연결된 경우와 같이 사용자에게 여러 연결이 있을 수 있습니다.

  • 메시지: 클라이언트가 연결되면 메시지를 업스트림 애플리케이션으로 보내거나 WebSocket 연결을 통해 업스트림 애플리케이션에서 메시지를 받을 수 있습니다. 메시지는 일반 텍스트, 이진 파일 또는 JSON 형식일 수 있으며 최대 크기는 1MB입니다.

  • 클라이언트 이벤트: 이벤트는 클라이언트 연결의 수명 주기 동안 생성됩니다. 예를 들어 단순 WebSocket 클라이언트 연결에서는 서비스에 연결하려고 하면 connect 이벤트, 서비스에 성공적으로 연결되면 connected 이벤트, 서비스에 메시지를 보낼 때 message 이벤트, 서비스에서 연결이 끊어지면 disconnected 이벤트가 생성됩니다. 클라이언트 이벤트에 대한 세부 정보는 클라이언트 프로토콜 섹션에 설명되어 있습니다.

  • 이벤트 처리기: 이벤트 처리기에는 클라이언트 이벤트를 처리하는 논리가 포함되어 있습니다. 포털이나 Azure CLI를 통해 미리 서비스에 이벤트 처리기를 등록하고 구성합니다. 세부 정보는 이벤트 처리기 섹션에 설명되어 있습니다.

  • 이벤트 수신기(미리 보기): 이벤트 수신기는 클라이언트 이벤트를 수신하지만 응답을 통해 클라이언트의 수명을 방해할 수는 없습니다. 자세한 내용은 이벤트 수신기 섹션에 설명되어 있습니다.

  • 서버: 서버는 클라이언트 이벤트를 처리하거나, 클라이언트 연결을 관리하거나, 그룹에 메시지를 게시할 수 있습니다. 이벤트 처리기와 이벤트 수신기는 모두 서버 쪽으로 간주됩니다. 서버에 대한 자세한 내용은 서버 프로토콜 섹션에 설명되어 있습니다.

Important

Hub, Group, UserId는 클라이언트를 관리하고 메시지를 보낼 때 중요한 역할입니다. 여러 REST API 호출에서 일반 텍스트로 매개 변수가 필요합니다. 따라서 이러한 필드에 중요한 정보를 포함하지 마세요. 예를 들어 누출 위험이 높은 자격 증명 또는 전달자 토큰입니다.

워크플로

서비스를 사용하는 일반적인 워크플로는 다음과 같습니다.

Web PubSub 서비스 워크플로를 보여 주는 다이어그램

위의 워크플로 그래프에서 설명한 대로 다음이 구성됩니다.

  1. 클라이언트는 WebSocket 전송을 사용하여 서비스의 허브에 연결합니다. 서비스는 클라이언트가 사용하는 프로토콜에 따라 메시지를 구성된 업스트림(서버)으로 전달하거나 자체적으로 메시지를 처리하고 클라이언트가 직접 게시/구독을 수행하도록 허용할 수 있습니다. 세부 정보는 클라이언트 프로토콜에 설명되어 있습니다.

  2. 다른 클라이언트 이벤트에서 서비스는 CloudEvents 프로토콜을 사용하여 서버를 호출합니다. CloudEvents는 CNCF(Cloud Native Computing Foundation)에서 호스트하는 이벤트의 구조 및 메타데이터 설명에 대한 표준화된 프로토콜 독립적 정의입니다. 세부 정보는 서버 프로토콜에 설명되어 있습니다.

  3. 서버는 REST API로 서비스를 호출하여 클라이언트에 메시지를 보내거나 연결된 클라이언트를 관리할 수 있습니다. 세부 정보는 서버 프로토콜에 설명되어 있습니다.