Delen via


Azure Web PubSub-triggerbinding voor Azure Functions

Gebruik de Azure Web PubSub-trigger om clientevenementen van de Azure Web PubSub-service te verwerken.

Het patroon van het triggereindpunt zou als volgt moeten worden ingesteld in de web pubsub-service (portal: instellingen -> gebeurtenishandler -> URL-sjabloon). In het eindpuntpatroon is het queryonderdeel code=<API_KEY> VEREIST wanneer u Azure Function App gebruikt om beveiligingsredenen. De sleutel vindt u in Azure Portal. Zoek uw functie-app-resource en navigeer naar Functions ->App-sleutels -> ->webpubsub_extension nadat u de functie-app in Azure hebt geïmplementeerd. Deze sleutel is echter niet nodig wanneer u met lokale functies werkt.

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

Schermopname van functiesysteemsleutels ophalen.

Opmerking

In het volgende voorbeeld ziet u hoe u gebruikersgebeurtenissen van clients kunt verwerken.

[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 binding ondersteunt ook retourwaarde in synchronisatiescenario's, bijvoorbeeld systeem Connect - en gebruikersbeurtenis, wanneer de server de clientaanvraag kan controleren en weigeren, of berichten rechtstreeks naar de beller kan verzenden. Connectgebeurtenis respecteert en ConnectEventResponse, en gebruikersgebeurtenis EventErrorResponse respecteert UserEventResponse en EventErrorResponseresttypen die niet overeenkomen met het huidige scenario, worden genegeerd.

[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 binding biedt ook ondersteuning voor retourwaarde in synchronisatiescenario's, bijvoorbeeld systeem Connect - en gebruikersevenementen, wanneer de server de clientaanvraag kan controleren en weigeren, of het bericht rechtstreeks naar de aanvraagclient kan verzenden. In javaScript wordt zwak getypte taal gedeserialiseerd met betrekking tot de objectsleutels. En EventErrorResponse heeft de hoogste prioriteit vergeleken met restobjecten, dat als code deze zich in de return bevindt, het wordt geparseerd naar EventErrorResponse.

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

Notitie

Volledige voorbeelden voor deze taal zijn in behandeling.

Notitie

De Web PubSub-extensies voor Java worden nog niet ondersteund.

Configuratie

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld.

function.json-eigenschap Kenmerkeigenschap Beschrijving
soort n.v.t. Vereist - moet worden ingesteld op webPubSubTrigger.
richting n.v.t. Vereist - moet worden ingesteld op in.
naam n.v.t. Vereist: de variabelenaam die wordt gebruikt in functiecode voor de parameter die de gebeurtenisgegevens ontvangt.
naaf Knooppunt Vereist: de waarde moet worden ingesteld op de naam van de Web PubSub-hub om de functie te activeren. We ondersteunen het instellen van de waarde in kenmerk als hogere prioriteit, of deze kan worden ingesteld in app-instellingen als een globale waarde.
gebeurtenistype WebPubSubEventType Vereist: de waarde moet worden ingesteld als het gebeurtenistype van berichten om de functie te activeren. De waarde moet een user of system.
eventName Naam van het evenement Vereist: de waarde moet worden ingesteld als de gebeurtenis van berichten om de functie te activeren.

Voor system gebeurtenistype moet de naam van de gebeurtenis zich in connect, connected, . disconnected

Voor door de gebruiker gedefinieerde subprotocollen is messagede gebeurtenisnaam .

Voor door het systeem ondersteunde subprotocol json.webpubsub.azure.v1.is de gebeurtenisnaam door de gebruiker gedefinieerde gebeurtenisnaam.
clientProtocols ClientProtocols Optioneel: geeft aan welk clientprotocol de Web PubSub-triggerfuncties kan activeren.

De volgende hoofdlettergevoelige waarden zijn geldig:
allaccepteert alle clientprotocollen. Standaardwaarde.
webPubSub: Accepteert alleen Web PubSub-protocollen.
mqtt: Accepteert alleen MQTT-protocollen.
verbinding Verbinding Optioneel: de naam van een app-instellingen of verzameling die de upstream Azure Web PubSub-service aangeeft. De waarde wordt gebruikt voor handtekeningvalidatie. En de waarde wordt standaard automatisch opgelost met app-instellingen WebPubSubConnectionString . En null betekent dat de validatie niet nodig is en altijd slaagt.

Belangrijk

Voor optimale beveiliging moet uw functie-app beheerde identiteiten gebruiken bij het maken van verbinding met de Web PubSub-service in plaats van een verbindingsreeks, die een gedeelde geheime sleutel bevat. Zie Een beheerde identiteitsaanvraag autoriseren met behulp van Microsoft Entra-id voor meer informatie.

Gebruik

In C# WebPubSubEventRequest is het type herkende bindingsparameter. Rest-parameters zijn afhankelijk van de parameternaam. Controleer de volgende tabel op beschikbare parameters en typen.

In zwak getypte taal, zoals JavaScript, name wordt gebruikt function.json om het triggerobject te binden met betrekking tot de volgende toewijzingstabel. En respecteer dataType om function.json het bericht dienovereenkomstig te converteren wanneer name deze is ingesteld data als het bindingsobject voor triggerinvoer. Alle parameters kunnen worden gelezen uit context.bindingData.<BindingName> en worden JObject geconverteerd.

Bindingsnaam Bindingstype Beschrijving Eigenschappen
aanvraag WebPubSubEventRequest Beschrijft de upstream-aanvraag De eigenschap verschilt per gebeurtenistype, waaronder afgeleide klassen ConnectEventRequest, , MqttConnectEventRequest, ConnectedEventRequest, MqttConnectedEventRequest, UserEventRequest, DisconnectedEventRequesten MqttDisconnectedEventRequest.
verbindingscontext WebPubSubConnectionContext Algemene aanvraaggegevens EventType, EventName, Hub, ConnectionId, UserId, Headers, Origin, Signature, States
gegevens BinaryData,,string,Streambyte[] Berichtgegevens aanvragen van client in gebruikers message gebeurtenis -
Datatype WebPubSubDataType Request message dataType, die ondersteuning biedt binaryvoor , textjson -
aanspraken IDictionary<string, string[]> Gebruikersclaims in systeemaanvraag connect -
zoekopdracht IDictionary<string, string[]> Gebruikersquery in systeemaanvraag connect -
subprotocollen IList<string> Beschikbare subprotocollen in systeemaanvraag connect -
clientcertificaten IList<ClientCertificate> Een lijst met certificaatvingerafdrukken van clients in systeemaanvraag connect -
reden string Reden in systeemaanvraag disconnected -

Belangrijk

In C# moeten meerdere typen ondersteunde parameter

Antwoord retourneren

WebPubSubTrigger respecteert het geretourneerde antwoord van de klant voor synchrone gebeurtenissen van connect en gebruikersgebeurtenissen. Alleen overeenkomende antwoorden worden teruggestuurd naar de service, anders wordt het genegeerd. WebPubSubTrigger Bovendien ondersteunt return-object gebruikers voor SetState() en ClearStates() het beheren van de metagegevens voor de verbinding. En de extensie voegt de resultaten van de retourwaarde samen met de oorspronkelijke waarden uit de aanvraag WebPubSubConnectionContext.States. De waarde in de bestaande sleutel wordt overschreven en de waarde in de nieuwe sleutel wordt toegevoegd.

Retourtype Beschrijving Eigenschappen
ConnectEventResponse Antwoord voor connect gebeurtenis Groepen, rollen, userid, subprotocol
UserEventResponse Antwoord voor gebruikersevenement DataType, Gegevens
EventErrorResponse Foutreactie voor de synchronisatie-gebeurtenis Code, Foutmelding
*WebPubSubEventResponse Basisreactietype van de ondersteunde antwoorden die worden gebruikt voor onzekere retourcases -