다음을 통해 공유


Azure Functions에 대한 Azure Web PubSub 트리거 바인딩

Azure Web PubSub 트리거를 사용하여 Azure Web PubSub 서비스에서 클라이언트 이벤트를 처리합니다.

트리거 엔드포인트 패턴은 Web PubSub 서비스 쪽에서 설정해야 하는 다음과 같습니다(포털: 설정 -> 이벤트 처리기 -> URL 템플릿). 엔드포인트 패턴에서 쿼리 부분 code=<API_KEY>보안상의 이유로 Azure 함수 앱을 사용할 때 필수입니다. 키는 Azure Portal에서 찾을 수 있습니다. 함수 앱 리소스를 찾고, Azure에 함수 앱을 배포한 후에 함수 ->앱 키 ->시스템 키 ->webpubsub_extension으로 이동합니다. 그러나 로컬 함수를 사용할 때는 이 키가 필요하지 않습니다.

<Function_App_Url>/runtime/webhooks/webpubsub?code=<API_KEY>

함수 시스템 키 가져오기의 스크린샷.

예시

다음 샘플에서는 클라이언트에서 사용자 이벤트를 처리하는 방법을 보여 줍니다.

[Function("Broadcast")]
public static void Run(
[WebPubSubTrigger("<hub>", WebPubSubEventType.User, "message")] UserEventRequest request, ILogger log)
{
    log.LogInformation($"Request from: {request.ConnectionContext.UserId}");
    log.LogInformation($"Request message data: {request.Data}");
    log.LogInformation($"Request message dataType: {request.DataType}");
}

또한 WebPubSubTrigger 바인딩은 서버가 클라이언트 요청을 확인 및 거부하거나 호출자에 직접 메시지를 보낼 수 있는 경우 Connect 시스템 및 사용자 이벤트와 같은 일부 시나리오의 반환 값도 지원합니다. Connect 이벤트는 ConnectEventResponseEventErrorResponse를 준수하고, 사용자 이벤트는 UserEventResponseEventErrorResponse를 준수하며, 현재 시나리오와 일치하지 않는 rest 유형은 무시됩니다.

[Function("Broadcast")]
public static UserEventResponse Run(
[WebPubSubTrigger("<hub>", WebPubSubEventType.User, "message")] UserEventRequest request)
{
    return new UserEventResponse("[SYSTEM ACK] Received.");
}
const { app, trigger } = require('@azure/functions');

const wpsTrigger = trigger.generic({
    type: 'webPubSubTrigger',
    name: 'request',
    hub: '<hub>',
    eventName: 'message',
    eventType: 'user'
});

app.generic('message', {
    trigger: wpsTrigger,
    handler: async (request, context) => {
        context.log('Request from: ', request.connectionContext.userId);
        context.log('Request message data: ', request.data);
        context.log('Request message dataType: ', request.dataType);
    }
});

또한 WebPubSubTrigger 바인딩은 서버가 클라이언트 요청을 확인 및 거부하거나 요청 클라이언트에 직접 메시지를 보낼 수 있는 경우 Connect 시스템 및 사용자 이벤트와 같은 일부 시나리오의 반환 값도 지원합니다. 약한 형식의 JavaScript 언어에서는 개체 키와 관련하여 역직렬화됩니다. 그리고 EventErrorResponse rest 개체와 비교하는 우선 순위가 가장 높으며, 반환되는 경우 code 구문 분석됩니다 EventErrorResponse.

app.generic('message', {
    trigger: wpsTrigger,
    handler: async (request, context) => {
          return {
              "data": "ack",
              "dataType" : "text"
          };
    }
});

참고 항목

이 언어에 대한 전체 샘플이 보류 중입니다.

참고 항목

Java용 Web PubSub 확장은 아직 지원되지 않습니다.

구성

다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.

function.json 속성 특성 속성 설명
type 해당 없음 필수 - webPubSubTrigger으로 설정해야 합니다.
direction 해당 없음 필수 - in으로 설정해야 합니다.
이름 해당 없음 필수 - 이벤트 데이터를 수신하는 매개 변수에 대한 함수 코드에 사용되는 변수 이름입니다.
hub 허브 필수 - 함수가 트리거되려면 이 값을 반드시 Web PubSub 허브 이름으로 설정해야 합니다. 특성의 값을 더 높은 우선 순위로 설정하거나 앱 설정에서 전역 값으로 설정할 수 있습니다.
eventType WebPubSubEventType 필수 - 함수가 트리거되려면 이 값을 반드시 메시지의 이벤트 유형으로 설정해야 합니다. 값은 user 또는 system이어야 합니다.
eventName EventName 필수 - 함수가 트리거되려면 이 값을 반드시 메시지의 이벤트로 설정해야 합니다.

이벤트 형식의 경우 system 이벤트 이름은 < a0/connecteddisconnected>에 connect있어야 합니다.

사용자 정의 하위 프로토콜의 경우 이벤트 이름은 .입니다message.

시스템 지원 하위 프로토콜json.webpubsub.azure.v1.의 경우 이벤트 이름은 사용자 정의 이벤트 이름입니다.
clientProtocols ClientProtocols 선택 사항 - Web PubSub 트리거 함수를 트리거할 수 있는 클라이언트 프로토콜을 지정합니다.

대/소문자를 구분하지 않는 값은 유효합니다
all. 모든 클라이언트 프로토콜을 허용합니다. 기본값입니다.
webPubSub: Web PubSub 프로토콜만 허용합니다.
mqtt: MQTT 프로토콜만 허용합니다.
connection Connection 선택 사항 - 업스트림 Azure Web PubSub 서비스를 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 이 값은 서명 유효성 검사에 사용됩니다. 그리고 기본적으로 앱 설정 WebPubSubConnectionString 으로 값이 자동으로 확인됩니다. 그리고 null 유효성 검사가 필요하지 않으며 항상 성공한다는 것을 의미합니다.

사용

C#에서 WebPubSubEventRequest는 형식 인식 바인딩 매개 변수이고, rest 매개 변수는 매개 변수 이름으로 바인딩됩니다. 다음 표에서 사용 가능한 매개 변수 및 형식을 확인합니다.

JavaScript name 와 같은 약한 형식의 언어에서는 function.json 다음 매핑 테이블과 관련하여 트리거 개체를 바인딩하는 데 사용됩니다. 또한 name이 트리거 입력에 대한 바인딩 개체로서 data로 설정되면 그에 따라 function.json에서 dataType을 준수하여 메시지를 변환합니다. 모든 매개 변수는 context.bindingData.<BindingName>에서 읽을 수 있으며 JObject가 변환됩니다.

바인딩 이름 바인딩 유형 설명 속성
요청 WebPubSubEventRequest 업스트림 요청 설명 속성은 파생 클래스ConnectEventRequest, , UserEventRequestConnectedEventRequestMqttConnectedEventRequestDisconnectedEventRequest, 및 를 비롯한 다양한 이벤트 유형에 MqttDisconnectedEventRequest따라 다릅니다. MqttConnectEventRequest
connectionContext WebPubSubConnectionContext 일반 요청 정보 EventType, EventName, Hub, ConnectionId, UserId, Headers, Origin, Signature, States
데이터 BinaryData,string,Stream,byte[] 사용자 message 이벤트의 클라이언트에서 메시지 데이터 요청 -
dataType WebPubSubDataType 요청 메시지 dataType은 binary, text, json을 지원합니다. -
claims IDictionary<string, string[]> 시스템 connect 요청의 사용자 클레임 -
query IDictionary<string, string[]> 시스템 connect 요청의 사용자 쿼리 -
subprotocols IList<string> 시스템 connect 요청에서 사용 가능한 하위 프로토콜 -
clientCertificates IList<ClientCertificate> 시스템 connect 요청에서 클라이언트의 인증서 지문 목록 -
reason string 시스템 disconnected 요청의 이유 -

Important

C#에서는 지원되는 여러 형식의 매개 변수를 첫 번째 매개 변수에 배치해야 합니다. 즉, 함수 바인딩을 올바르게 만들려면 기본 BinaryData 형식 이외의 request 또는 data를 배치해야 합니다.

반환 응답

WebPubSubTriggerconnect의 동기 이벤트 및 사용자 이벤트에 대해 고객이 반환한 응답을 준수합니다. 일치하는 응답만 서비스로 다시 전송되며, 그렇지 않으면 무시됩니다. 또한 WebPubSubTrigger return 개체는 사용자의 SetState()ClearStates()를 지원하고 연결에 대한 메타데이터를 관리합니다. 또한 확장은 반환 값의 결과를 요청 WebPubSubConnectionContext.States의 원래 값과 병합합니다. 기존 키의 값은 덮어쓰고 새 키의 값이 추가됩니다.

반환 형식 설명 속성
ConnectEventResponse connect 이벤트에 대한 응답 Groups, Roles, UserId, Subprotocol
UserEventResponse 사용자 이벤트에 대한 응답 DataType, Data
EventErrorResponse 동기화 이벤트에 대한 오류 응답 Code, ErrorMessage
*WebPubSubEventResponse 확실하지 않은 반환 사례에 사용되는 지원 응답의 기본 응답 형식 -