다음을 통해 공유


AMQP 프로토콜을 사용하는 Azure Web PubSub 이벤트 수신기용 CloudEvents 확장

Azure Web PubSub 서비스는 클라이언트 이벤트를 CloudEvents로 설명합니다. CloudEvents는 서비스, 플랫폼 및 시스템 간에 상호 운용성을 제공하기 위해 공통 형식으로 이벤트 데이터를 설명하기 위한 사양입니다.

서비스의 이벤트 수신기는 클라이언트 이벤트를 수신합니다. Event Hubs는 현재 기본 프로토콜이 AMQP(Advanced Message Queuing Protocol)인 유일하게 지원되는 이벤트 수신기 엔드포인트입니다. Web PubSub 서비스는 CloudEvents AMQP 프로토콜 바인딩을 사용하여 CloudEvents를 AMQP 메시지에 매핑합니다.

서비스에서 서버로 전송되는 데이터는 항상 CloudEvents binary 형식입니다.

Web PubSub CloudEvents 특성 확장

이 확장은 생성하는 각 이벤트에 대해 Web PubSub에서 사용하는 특성을 정의합니다.

다음 표에는 AMQP 메시지의 표준 속성 섹션에 대한 특성 매핑이 포함되어 있습니다.

이름 설명 예시
content-type 메시지 본문의 RFC-2046 MIME 형식 application/json
message-id Web PubSub 서비스에서 "{연결 ID}/{서비스에 의해 생성된 정수}" 형식으로 메시지를 고유하게 정의합니다. 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db/1

다음 표에는 AMQP 메시지의 애플리케이션 속성 섹션에 매핑되는 모든 CloudEvents 특성이 포함되어 있습니다. 각 특성 이름에는 cloudEvents: 접두사가 붙습니다.

이름 설명 예시
specversion 클라우드 이벤트 사양 버전은 항상 1.0입니다. 1.0
source 이벤트가 발생한 허브 및 연결 ID를 "/hubs/{허브}/client/{연결 ID}" 형식으로 나타냅니다. /hubs/chat/client/0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
id 동일한 클라이언트 연결의 이벤트에서 고유한 서비스에 의해 생성된 정수 1
awpsversion 클라우드 이벤트 Azure Web PubSub 사양 버전, 항상 1.0입니다. 1.0
hub 이벤트가 발생한 허브 이름 채팅
eventname 이벤트의 이름 연결됨
type 이벤트 유형 azure.webpubsub.sys.connect
connectionid 클라이언트 연결 ID 0bd83792-2a0c-48d3-9fbd-df63aa2ed9db
time 서비스가 "yyyy-MM-ddTHH:mm:ssZ" 형식으로 이벤트를 보내는 시간 2021-01-01T00:00:00Z
userid* 사용자 ID user1
subprotocol* 하위 프로토콜 이름 json.webpubsub.azure.v1
connectionstate* 연결 상태를 정의합니다. 이벤트 처리기의 응답 헤더에서 값을 초기화할 수 있습니다. 연결 상태에 대한 자세한 내용은 Web PubSub CloudEvents 특성을 참조하세요. 모든 문자열

특성 이름 다음의 "*"는 값이 null이 아니거나 비어 있지 않은 경우에만 특성이 있음을 나타냅니다.

이벤트

이 섹션은 특정 클라이언트 이벤트 유형에 따라 달라지는 특성 값이 포함된 AMQP 메시지 본문을 보여 줍니다. 클라이언트 이벤트 유형에 의존하지 않는 특성 값은 생략됩니다.

시스템 connected 이벤트

  • content-type: application/json
  • cloudEvents:type: azure.webpubsub.sys.connected
  • cloudEvents:eventname: connected

메시지 본문은 항상 비어 있는 JSON입니다.

{}

시스템 disconnected 이벤트

  • content-type: application/json
  • cloudEvents:type: azure.webpubsub.sys.disconnected
  • cloudEvents:eventname: disconnected

메시지 본문에는 클라이언트 연결이 끊어진 이유가 포함되어 있습니다.

{"reason":"{Reason}"}

단순 WebSocket 클라이언트에 대한 사용자 이벤트 message

  • content-type: 바이너리 프레임의 경우 application/octet-stream, 텍스트 프레임의 경우 text/plain
  • cloudEvents:type: azure.webpubsub.user.message

메시지 본문은 클라이언트가 보내는 것입니다.

PubSub WebSocket 클라이언트에 대한 사용자 지정 이벤트 {custom_event}

  • content-type: 이진 파일 프레임의 경우 application/octet-stream. JSON 프레임의 경우 application/json. 텍스트 프레임의 경우 text/plain. Protobuf 프레임의 경우 application/x-protobuf
  • cloudEvents:type: azure.webpubsub.user.<event_name>

다음 사례는 다양한 데이터 콘텐츠 형식과 수신된 AMQP 메시지 본문을 사용하여 이벤트를 보내는 방법을 보여 줍니다.

사례 1: 텍스트 데이터와 함께 이벤트 보내기:

{
    "type": "event",
    "event": "<event_name>",
    "dataType": "text",
    "data": "text data"
}

수신된 AMQP 메시지 본문:

text data

사례 2: JSON 데이터로 이벤트 보내기:

{
    "type": "event",
    "event": "<event_name>",
    "dataType": "json",
    "data": {
        "hello": "world"
     }
}

수신된 AMQP 메시지 본문:

{
    "hello": "world"
}

사례 3: 이진 데이터와 함께 이벤트 보내기:

{
    "type": "event",
    "event": "<event_name>",
    "dataType": "binary",
    "data": "aGVsbG8gd29ybGQ=" // base64 encoded binary
}

수신된 AMQP 메시지 본문:

<binary data>