Sdílet prostřednictvím


Vazba triggeru Azure Web PubSub pro Azure Functions

Trigger Azure Web PubSub slouží ke zpracování klientských událostí ze služby Azure Web PubSub.

Vzor koncového bodu triggeru by byl následující, který by se měl nastavit na straně služby Web PubSub (portál: nastavení –> obslužná rutina události –> šablona adresy URL). Ve vzoru koncového bodu se část code=<API_KEY> dotazu vyžaduje, pokud používáte aplikaci Azure Function App z bezpečnostních důvodů. Klíč najdete na webu Azure Portal. Najděte prostředek aplikace funkcí a po nasazení aplikace funkcí do Azure přejděte na Functions ->App keys ->System keys ->webpubsub_extension. I když pracujete s místními funkcemi, tento klíč není potřeba.

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

Snímek obrazovky se získáním systémových klíčů funkcí

Příklad

Následující ukázka ukazuje, jak zpracovávat uživatelské události z klientů.

[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 Vazba také podporuje návratovou hodnotu ve scénářích synchronizace, například událost systému Connect a uživatele, kdy server může zkontrolovat a odepřít požadavek klienta nebo odesílat zprávy volajícímu přímo. Connect respektuje ConnectEventResponse události a EventErrorResponsea uživatelská událost respektuje UserEventResponse a EventErrorResponse, typy rest, které neodpovídají aktuálnímu scénáři, se ignorují.

[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 Vazba také podporuje návratovou hodnotu ve scénářích synchronizace, například událost systému Connect a uživatele, kdy server může zkontrolovat a odepřít požadavek klienta nebo odeslat zprávu klientovi přímo. V javascriptovém slabě napsaný jazyk je deserializován v souvislosti s klíči objektu. A EventErrorResponse má nejvyšší prioritu porovnávat s objekty rest, že pokud code je ve návratu, pak se parsuje na EventErrorResponse.

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

Poznámka:

Kompletní ukázky pro tento jazyk čekají na vyřízení.

Poznámka:

Rozšíření Web PubSub pro Javu se zatím nepodporují.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json .

vlastnost function.json Vlastnost atributu Popis
typ Není k dispozici Povinné – musí být nastaveno na webPubSubTriggerhodnotu .
směr Není k dispozici Povinné – musí být nastaveno na inhodnotu .
Jméno Není k dispozici Povinné – název proměnné použité v kódu funkce pro parametr, který přijímá data události.
rozbočovač Centrum Povinný argument – hodnota musí být nastavena na název centra Web PubSub, aby se funkce aktivovala. Podporujeme nastavení hodnoty v atributu jako vyšší prioritu nebo ji lze nastavit v nastavení aplikace jako globální hodnotu.
typ události Typ události WebPubSub Povinný argument – hodnota musí být nastavena jako typ události zpráv, aby se funkce aktivovala. Hodnota by měla být buď user nebo system.
eventName Název Události Povinný argument – hodnota musí být nastavena jako událost zpráv, aby se funkce aktivovala.

Pro system typ události by název události měl být v connect, connected, disconnected.

Pro uživatelem definované dílčíprotokoly je messagenázev události .

V případě systému podporovaného subprotocolu json.webpubsub.azure.v1.je název události definovaný uživatelem.
clientProtocols ClientProtocols Volitelné – určuje, který klientský protokol může aktivovat funkce triggeru Web PubSub.

Následující hodnoty nerozlišující malá a velká písmena jsou platné:
all: Přijímá všechny klientské protokoly. Výchozí hodnota.
webPubSub: Přijímá pouze protokoly Web PubSub.
mqtt: Přijímá pouze protokoly MQTT.
připojení Připojení Volitelné – název nastavení aplikace nebo nastavení kolekce, která určuje nadřazenou službu Azure Web PubSub. Hodnota se používá k ověření podpisu. A hodnota je automaticky vyřešena s nastavením WebPubSubConnectionString aplikace ve výchozím nastavení. A null znamená, že ověření není potřeba a vždy proběhne úspěšně.

Důležité

Pro zajištění optimálního zabezpečení by vaše aplikace funkcí měla používat spravované identity při připojování ke službě Web PubSub místo připojovacího řetězce, který obsahuje sdílený tajný klíč. Další informace naleznete v tématu Autorizace žádosti o spravovanou identitu pomocí Microsoft Entra ID.

Použití

V jazyce C# WebPubSubEventRequest je typ rozpoznaný parametr vazby, parametry rest jsou vázané na název parametru. V následující tabulce najdete dostupné parametry a typy.

Ve slabě zadaném jazyce, jako je JavaScript, namefunction.json se používá k vytvoření vazby objektu triggeru týkajícího se následující tabulky mapování. A úcta dataTypefunction.json k převodu zprávy odpovídajícím způsobem, pokud name je nastavena jako data vazba objekt pro aktivační vstup. Všechny parametry lze načíst context.bindingData.<BindingName> a JObject převést.

Název vazby Typ vazby Popis Vlastnosti
prosba WebPubSubEventRequest Popisuje upstreamové požadavky. Vlastnost se liší různými typy událostí, včetně odvozených tříd ConnectEventRequest, MqttConnectEventRequest, ConnectedEventRequest, MqttConnectedEventRequest, UserEventRequest, , , DisconnectedEventRequesta MqttDisconnectedEventRequest.
kontext připojení WebPubSubConnectionContext Běžné informace o žádostech TypUdálosti, NázevUdálosti, Centrum, IdPřipojení, IdUživatele, Hlavičky, Původ, Podpis, Stavy
údaje BinaryData,string,Stream,byte[] Vyžádání dat zpráv z klienta v události uživatele message -
Datatype WebPubSubDataType Požadovat datový typ zprávy, který podporuje binary, text, json -
deklarace identity IDictionary<string, string[]> Deklarace identity uživatelů v systémové connect žádosti -
dotaz IDictionary<string, string[]> Dotaz uživatele v systémovém connect požadavku -
subprotocoly IList<string> Dostupné dílčí protokoly v systémovém connect požadavku -
klientské certifikáty IList<ClientCertificate> Seznam kryptografického otisku certifikátu od klientů v connect systémové žádosti -
důvod string Důvod v systémové disconnected žádosti -

Důležité

V jazyce C# musí.

Návratová odpověď

WebPubSubTrigger respektuje odpověď vrácenou zákazníkem pro synchronní události connect a událost uživatele. Odpověď se odešle zpět do služby, jinak se ignoruje. WebPubSubTrigger Kromě toho návratový objekt podporuje uživatele do SetState() a ClearStates() správu metadat pro připojení. A rozšíření sloučí výsledky z návratové hodnoty s původními výsledky z požadavku WebPubSubConnectionContext.States. Hodnota v existujícím klíči se přepíše a přidá se hodnota v novém klíči.

Návratový typ Popis Vlastnosti
ConnectEventResponse Odpověď na connect událost Skupiny, role, userId, subprotocol
UserEventResponse Odpověď na událost uživatele Datový typ, data
EventErrorResponse Chybová odpověď na událost synchronizace Kód, ErrorMessage
*WebPubSubEventResponse Základní typ odpovědi podporovaných pro nejisté případy vrácení -