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>
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
.
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 message hä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 , , ConnectedEventRequest MqttConnectEventRequest , MqttConnectedEventRequest , , UserEventRequest , DisconnectedEventRequest och 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 | - |