Dela via


Azure Web PubSub-utlösarbindning för Azure Functions

Använd Azure Web PubSub-utlösaren för att hantera klienthändelser från Azure Web PubSub-tjänsten.

Mönstret för utlösarens slutpunkt skulle vara följande, vilket bör anges på WebbpubSub-tjänstsidan (Portal: inställningar –> händelsehanterare –> URL-mall). I slutpunktsmönstret krävs frågedelen code=<API_KEY> när du använder Azure-funktionsappen av säkerhetsskäl. Nyckeln finns i Azure-portalen. Hitta funktionsappens resurs och gå till Functions ->App keys ->System keys ->webpubsub_extension när du har distribuerat funktionsappen till Azure. Den här nyckeln behövs dock inte när du arbetar med lokala funktioner.

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

Skärmbild av hämta funktionssystemnycklar.

Exempel

Följande exempel visar hur du hanterar användarhändelser från klienter.

[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 bindning stöder också returvärde i synkroniserade scenarier, till exempel system Connect - och användarhändelse, när servern kan kontrollera och neka klientbegäran eller skicka meddelanden direkt till anroparen. Connect händelse respekterar ConnectEventResponse och EventErrorResponse, och användarhändelse respekterar UserEventResponse och EventErrorResponse, vilotyper som inte matchar det aktuella scenariot ignoreras.

[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 bindning stöder även returvärde i synkroniserade scenarier, till exempel system Connect - och användarhändelse, när servern kan kontrollera och neka klientbegäran eller skicka ett meddelande direkt till begärandeklienten. I ett svagt skrivet JavaScript-språk är det deserialiserat när det gäller objektnycklarna. Och EventErrorResponse har den högsta prioriteten jämfört med vilande objekt, som om code är i returen, så parsas den till EventErrorResponse.

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

Kommentar

Fullständiga exempel för det här språket väntar

Kommentar

Web PubSub-tilläggen för Java stöds inte ännu.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .

function.json egenskap Attributegenskap beskrivning
typ saknas Obligatoriskt – måste anges till webPubSubTrigger.
riktning saknas Obligatoriskt – måste anges till in.
Namn saknas Obligatoriskt – variabelnamnet som används i funktionskoden för parametern som tar emot händelsedata.
nav Hubb Obligatoriskt – värdet måste anges till namnet på Web PubSub-hubben för att funktionen ska utlösas. Vi har stöd för att ange värdet i attributet som högre prioritet, eller så kan det anges i appinställningar som ett globalt värde.
Händelsetyp WebPubSubEventType Obligatoriskt – värdet måste anges som händelsetyp för meddelanden för att funktionen ska utlösas. Värdet ska vara antingen user eller system.
eventName EventName Obligatoriskt – värdet måste anges som händelse av meddelanden för att funktionen ska utlösas.

För system händelsetyp ska händelsenamnet vara i connect, connected, disconnected.

För användardefinierade subprotokoler är messagehändelsenamnet .

För underprotokol json.webpubsub.azure.v1.som stöds av systemet är händelsenamnet användardefinierat händelsenamn.
clientProtocols ClientProtocols Valfritt – anger vilket klientprotokoll som kan utlösa Web PubSub-utlösarfunktionerna.

Följande skiftlägesokänsliga värden är giltiga:
all: Accepterar alla klientprotokoll. Standardvärde.
webPubSub: Accepterar endast Web PubSub-protokoll.
mqtt: Accepterar endast MQTT-protokoll.
samband Connection Valfritt – namnet på en appinställningar eller inställningssamling som anger den överordnade Azure Web PubSub-tjänsten. Värdet används för signaturverifiering. Och värdet matchas automatiskt med appinställningar WebPubSubConnectionString som standard. Och null innebär att valideringen inte behövs och alltid lyckas.

Användningsområden

I C# WebPubSubEventRequest är typen identifierad bindningsparameter, restparametrar är bundna av parameternamn. I följande tabell finns tillgängliga parametrar och typer.

I ett svagt skrivet språk som JavaScript name används i function.json för att binda utlösarobjektet för följande mappningstabell. Och respekt dataType för function.json att konvertera meddelandet i enlighet med detta när name är inställt data på som bindningsobjektet för utlösarindata. Alla parametrar kan läsas från context.bindingData.<BindingName> och JObject konverteras.

Bindningsnamn Bindningstyp beskrivning Egenskaper
begäran WebPubSubEventRequest Beskriver den överordnade begäran Egenskapen skiljer sig mellan olika händelsetyper, inklusive härledda klasser ConnectEventRequest, , ConnectedEventRequestMqttConnectEventRequest, MqttConnectedEventRequest, , UserEventRequest, DisconnectedEventRequestoch MqttDisconnectedEventRequest.
connectionContext WebPubSubConnectionContext Gemensam information om begäranden EventType, EventName, Hub, ConnectionId, UserId, Headers, Origin, Signature, States
data BinaryData,string,Stream,byte[] Begära meddelandedata från klienten i användarhändelse message -
Datatyp WebPubSubDataType Begär meddelandedataType, som stöder binary, text, json -
anspråk IDictionary<string, string[]> Användaranspråk i systembegäran connect -
query IDictionary<string, string[]> Användarfråga i systembegäran connect -
subprotocols IList<string> Tillgängliga delprotokoler i systembegäran connect -
clientCertificates IList<ClientCertificate> En lista över tumavtryck för certifikat från klienter i systembegäran connect -
orsak string Orsak i systembegäran disconnected -

Viktigt!

I C# måste flera typer som stöds ange parametern MÅSTE placeras i den första, dvs. request eller data den andra än standardtypen BinaryData för att göra funktionen bindning korrekt.

Retursvar

WebPubSubTrigger respekterar kundens returnerade svar för synkrona händelser och connect användarhändelser. Endast matchat svar skickas tillbaka till tjänsten, annars ignoreras det. Dessutom stöder returneringsobjekt WebPubSubTrigger användare till SetState() och ClearStates() för att hantera metadata för anslutningen. Och tillägget sammanfogar resultatet från returvärdet med de ursprungliga från begäran WebPubSubConnectionContext.States. Värdet i den befintliga nyckeln skrivs över och värdet i den nya nyckeln läggs till.

Returtyp beskrivning Egenskaper
ConnectEventResponse Svar för connect händelse Grupper, roller, UserId, Subprotocol
UserEventResponse Svar för användarhändelse DataType, Data
EventErrorResponse Felsvar för synkroniseringshändelsen Kod, ErrorMessage
*WebPubSubEventResponse Bassvarstyp för de som stöds och som används för osäkra returärenden -