Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj wyzwalacza Azure Web PubSub, aby obsługiwać zdarzenia klienta z usługi Azure Web PubSub.
Wzorzec punktu końcowego wyzwalacza będzie następujący, który powinien być ustawiony po stronie usługi Web PubSub (portal: ustawienia —> procedura obsługi zdarzeń —> szablon adresu URL). We wzorcu punktu końcowego część code=<API_KEY> zapytania jest wymagana , gdy używasz aplikacji funkcji platformy Azure ze względów bezpieczeństwa . Klucz można znaleźć w witrynie Azure Portal. Znajdź zasób aplikacji funkcji i przejdź do pozycji Funkcje ->Klucze aplikacji ->Klucze systemowe ->webpubsub_extension po wdrożeniu aplikacji funkcji na platformie Azure. Jednak ten klucz nie jest potrzebny podczas pracy z funkcjami lokalnymi.
<Function_App_Url>/runtime/webhooks/webpubsub?code=<API_KEY>
Przykład
W poniższym przykładzie pokazano, jak obsługiwać zdarzenia użytkownika z klientów.
[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 Powiązanie obsługuje również wartość zwracaną w scenariuszach synchronizacji, na przykład zdarzenia systemu Connect i użytkownika, gdy serwer może sprawdzać i odrzucać żądanie klienta lub wysyłać komunikaty bezpośrednio do obiektu wywołującego.
Connectzdarzenia z uwzględnieniem ConnectEventResponseEventErrorResponse zdarzeń i UserEventResponse, oraz zdarzeń użytkownika i EventErrorResponse, typy rest nie pasujące do bieżącego scenariusza są ignorowane.
[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 Powiązanie obsługuje również wartość zwracaną w scenariuszach synchronizacji, na przykład zdarzenia systemu Connect i użytkownika, gdy serwer może sprawdzić i odrzucić żądanie klienta lub wysłać wiadomość bezpośrednio do klienta żądania. W języku JavaScript w słabym typie jest to deserializowane w odniesieniu do kluczy obiektów. I EventErrorResponse ma najwyższy priorytet w porównaniu z obiektami rest, że jeśli code jest w zwracaniu, to jest analizowany na EventErrorResponse.
app.generic('message', {
trigger: wpsTrigger,
handler: async (request, context) => {
return {
"data": "ack",
"dataType" : "text"
};
}
});
Uwaga
Kompletne przykłady dla tego języka są oczekujące.
Uwaga
Rozszerzenia Web PubSub dla języka Java nie są jeszcze obsługiwane.
Konfigurowanie
W poniższej tabeli opisano właściwości konfiguracji powiązania ustawione w pliku function.json .
| właściwość function.json | Właściwość atrybutu | opis |
|---|---|---|
| typ | nie dotyczy | Wymagane — musi być ustawiona na webPubSubTriggerwartość . |
| kierunek | nie dotyczy | Wymagane — musi być ustawiona na inwartość . |
| nazwa | nie dotyczy | Required — nazwa zmiennej używana w kodzie funkcji dla parametru, który odbiera dane zdarzenia. |
| koncentrator | Piasta | Wymagane — wartość musi być ustawiona na nazwę centrum Web PubSub, aby funkcja została wyzwolona. Obsługujemy ustawianie wartości w atrybucie jako wyższy priorytet lub można ją ustawić w ustawieniach aplikacji jako wartość globalną. |
| typ zdarzenia | WebPubSubEventType | Wymagane — wartość musi być ustawiona jako typ zdarzenia komunikatów, które mają być wyzwalane przez funkcję. Wartość powinna mieć wartość user lub system. |
| eventName | Nazwa wydarzenia | Wymagane — wartość musi być ustawiona jako zdarzenie komunikatów, które mają być wyzwalane przez funkcję.
W przypadku system typu zdarzenia nazwa zdarzenia powinna mieć connectwartość , connected, disconnected.
W przypadku podprotocol zdefiniowanych przez użytkownika nazwa zdarzenia to message.
W przypadku podprotocol json.webpubsub.azure.v1.obsługiwanego przez system nazwa zdarzenia to nazwa zdarzenia zdefiniowanego przez użytkownika. |
| clientProtocols | Kolumny ClientProtocols | Opcjonalne — określa, który protokół klienta może wyzwalać funkcje wyzwalacza Web PubSub.
Następujące wartości bez uwzględniania wielkości liter są prawidłowe: all: akceptuje wszystkie protokoły klienta. Wartość domyślna.
webPubSub: akceptuje tylko protokoły Web PubSub.
mqtt: akceptuje tylko protokoły MQTT. |
| połączenie | Połączenie | Opcjonalnie — nazwa ustawień aplikacji lub kolekcji ustawień, która określa nadrzędną usługę Azure Web PubSub. Wartość jest używana do walidacji podpisu. A wartość jest automatycznie rozpoznawana za pomocą ustawień WebPubSubConnectionString aplikacji domyślnie. Oznacza to null , że weryfikacja nie jest potrzebna i zawsze kończy się powodzeniem. |
Ważne
Aby zapewnić optymalne zabezpieczenia, aplikacja funkcji powinna używać tożsamości zarządzanych podczas nawiązywania połączenia z usługą Web PubSub zamiast używać parametrów połączenia, które zawierają wspólny klucz tajny. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądania tożsamości zarządzanej przy użyciu identyfikatora Entra firmy Microsoft.
Zwyczaje
W języku C# WebPubSubEventRequest jest typem rozpoznany parametr powiązania, parametry rest są powiązane przez nazwę parametru. Zapoznaj się z poniższą tabelą pod kątem dostępnych parametrów i typów.
W słabo wpisanym języku, na przykład JavaScript, name w function.json jest używany do powiązania obiektu wyzwalacza dotyczącego poniższej tabeli mapowania. I uwzględnianie dataType w function.json celu odpowiedniego przekonwertowania komunikatu, gdy name jest ustawiony data jako obiekt powiązania dla danych wejściowych wyzwalacza. Wszystkie parametry można odczytać i context.bindingData.<BindingName> przekonwertować JObject .
| Nazwa powiązania | Typ powiązania | opis | Właściwości |
|---|---|---|---|
| żądanie | WebPubSubEventRequest |
Opisuje żądanie nadrzędne | Właściwość różni się w zależności od różnych typów zdarzeń, w tym klas pochodnych ConnectEventRequest, MqttConnectEventRequest, ConnectedEventRequest, MqttConnectedEventRequest, UserEventRequest, DisconnectedEventRequest, i MqttDisconnectedEventRequest. |
| kontekst połączenia | WebPubSubConnectionContext |
Typowe informacje o żądaniu | Typ zdarzenia, Nazwa zdarzenia, Hub, ConnectionId, UserId, Nagłówki, Origin, Podpis, Stany |
| dane |
BinaryData,string,Stream,byte[] |
Żądanie danych komunikatów od klienta w zdarzeniu użytkownika message |
- |
| Datatype | WebPubSubDataType |
Request message dataType, który obsługuje binary, , textjson |
- |
| oświadczenia | IDictionary<string, string[]> |
Oświadczenia użytkownika w żądaniu systemowym connect |
- |
| zapytanie | IDictionary<string, string[]> |
Zapytanie użytkownika w żądaniu systemowym connect |
- |
| subprotokoły | IList<string> |
Dostępne podprotocols w żądaniu systemowym connect |
- |
| certyfikaty klientów | IList<ClientCertificate> |
Lista odcisków palca certyfikatu od klientów w żądaniu systemowym connect |
- |
| powód | string |
Przyczyna żądania systemowego disconnected |
- |
Ważne
W języku C#, wiele typów obsługiwanych parametrów MUSI być umieszczonych w pierwszym, tj. request lub data innym niż domyślny BinaryData typ, aby powiązanie funkcji było poprawne.
Zwracana odpowiedź
WebPubSubTrigger szanuje, że klient zwrócił odpowiedź na zdarzenia synchroniczne zdarzenia connect i zdarzenia użytkownika. Tylko dopasowana odpowiedź jest wysyłana z powrotem do usługi, w przeciwnym razie jest ignorowana.
WebPubSubTrigger Poza tym obiekt return obsługuje użytkowników w celu SetState() zarządzania metadanymi połączenia i ClearStates() zarządzania nimi. Rozszerzenie scala wyniki z wartości zwracanej z oryginalnymi z żądania WebPubSubConnectionContext.States. Wartość w istniejącym kluczu jest zastępowana, a wartość w nowym kluczu jest dodawana.
| Zwracany typ | opis | Właściwości |
|---|---|---|
ConnectEventResponse |
Odpowiedź na connect zdarzenie |
Grupy, role, UserId, Subprotocol |
UserEventResponse |
Odpowiedź na zdarzenie użytkownika | TypDanych, Dane |
EventErrorResponse |
Odpowiedź na błąd zdarzenia synchronizacji | Kod, ErrorMessage |
*WebPubSubEventResponse |
Podstawowy typ odpowiedzi obsługiwanych używanych w przypadku niepewnych przypadków powrotu | - |