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
이벤트는 ConnectEventResponse
및 EventErrorResponse
를 준수하고, 사용자 이벤트는 UserEventResponse
및 EventErrorResponse
를 준수하며, 현재 시나리오와 일치하지 않는 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
.
참고 항목
이 언어에 대한 전체 샘플이 보류 중입니다.
참고 항목
Java용 Web PubSub 확장은 아직 지원되지 않습니다.
구성
다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.
function.json 속성 | 특성 속성 | 설명 |
---|---|---|
type | 해당 없음 | 필수 - webPubSubTrigger 으로 설정해야 합니다. |
direction | 해당 없음 | 필수 - in 으로 설정해야 합니다. |
이름 | 해당 없음 | 필수 - 이벤트 데이터를 수신하는 매개 변수에 대한 함수 코드에 사용되는 변수 이름입니다. |
hub | 허브 | 필수 - 함수가 트리거되려면 이 값을 반드시 Web PubSub 허브 이름으로 설정해야 합니다. 특성의 값을 더 높은 우선 순위로 설정하거나 앱 설정에서 전역 값으로 설정할 수 있습니다. |
eventType | WebPubSubEventType | 필수 - 함수가 트리거되려면 이 값을 반드시 메시지의 이벤트 유형으로 설정해야 합니다. 값은 user 또는 system 이어야 합니다. |
eventName | EventName | 필수 - 함수가 트리거되려면 이 값을 반드시 메시지의 이벤트로 설정해야 합니다. 이벤트 형식의 경우 system 이벤트 이름은 < a0/connected disconnected >에 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 , , UserEventRequest ConnectedEventRequest MqttConnectedEventRequest DisconnectedEventRequest , 및 를 비롯한 다양한 이벤트 유형에 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
를 배치해야 합니다.
반환 응답
WebPubSubTrigger
는 connect
의 동기 이벤트 및 사용자 이벤트에 대해 고객이 반환한 응답을 준수합니다. 일치하는 응답만 서비스로 다시 전송되며, 그렇지 않으면 무시됩니다. 또한 WebPubSubTrigger
return 개체는 사용자의 SetState()
및 ClearStates()
를 지원하고 연결에 대한 메타데이터를 관리합니다. 또한 확장은 반환 값의 결과를 요청 WebPubSubConnectionContext.States
의 원래 값과 병합합니다. 기존 키의 값은 덮어쓰고 새 키의 값이 추가됩니다.
반환 형식 | 설명 | 속성 |
---|---|---|
ConnectEventResponse |
connect 이벤트에 대한 응답 |
Groups, Roles, UserId, Subprotocol |
UserEventResponse |
사용자 이벤트에 대한 응답 | DataType, Data |
EventErrorResponse |
동기화 이벤트에 대한 오류 응답 | Code, ErrorMessage |
*WebPubSubEventResponse |
확실하지 않은 반환 사례에 사용되는 지원 응답의 기본 응답 형식 | - |