Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie den Azure Web PubSub-Trigger, um Clientereignisse vom Azure Web PubSub-Dienst zu behandeln.
Das Triggerendpunktmuster lautet wie folgt, das im Web PubSub-Dienst (Portal: Einstellungen -> Ereignishandler -> URL-Vorlage) festgelegt werden sollte. Im Endpunktmuster ist der Abfrageteil code=<API_KEY>
aus SicherheitsgründenERFORDERLICH, wenn Sie eine Azure-Funktions-App verwenden. Den Schlüssel finden Sie im Azure-Portal. Suchen Sie nach dem Bereitstellen der Funktions-App in Azure nach Ihrer Funktions-App-Ressource, und navigieren Sie zu Functions ->App-Schlüssel ->Systemschlüssel ->webpubsub_extension. Wenn Sie mit lokalen Funktionen arbeiten, wird dieser Schlüssel jedoch nicht benötigt.
<Function_App_Url>/runtime/webhooks/webpubsub?code=<API_KEY>
Beispiel
Das folgende Beispiel zeigt, wie Benutzerereignisse von Clients behandelt werden.
[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}");
}
Die WebPubSubTrigger
-Bindung unterstützt in Synchronisierungsszenarien auch Rückgabewerte, z. B. bei Connect
-Ereignissen vom System oder von Benutzer*innen, bei denen der Server die Clientanforderung überprüfen und ablehnen oder Nachrichten direkt an den Aufrufer senden kann. Das Connect
-Ereignis berücksichtigt ConnectEventResponse
und EventErrorResponse
, das Benutzerereignis berücksichtigt UserEventResponse
und EventErrorResponse
. Die REST-Typen, die nicht zum aktuellen Szenario passen, werden ignoriert.
[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);
}
});
Die WebPubSubTrigger
-Bindung unterstützt in Synchronisierungsszenarien auch Rückgabewerte, z. B. bei Connect
-Ereignissen vom System oder von Benutzer*innen, bei denen der Server die Clientanforderung überprüfen und ablehnen oder Nachrichten direkt an den Anforderungsclient senden kann. In der schwach typisierten Sprache JavaScript erfolgt eine Deserialisierung in Bezug auf die Objektschlüssel. Und EventErrorResponse
hat die höchste Priorität im Vergleich zu Restobjekten, d. h., wenn code
sie sich in der Rückgabe befindet, dann wird sie analysiert EventErrorResponse
.
Hinweis
Vollständige Beispiele für diese Sprache stehen aus.
Hinweis
Die Web PubSub-Erweiterungen für Java werden noch nicht unterstützt.
Konfiguration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json festlegen.
Eigenschaft von „function.json“ | Attributeigenschaft | BESCHREIBUNG |
---|---|---|
Typ | Nicht zutreffend | Erforderlich – muss auf webPubSubTrigger festgelegt sein. |
Richtung | Nicht zutreffend | Erforderlich – muss auf in festgelegt sein. |
Name | Nicht zutreffend | Erforderlich – der Variablenname, der im Funktionscode für den Parameter verwendet wird, der die Ereignisdaten empfängt. |
Nabe | Drehscheibe | Dieser Wert ist erforderlich und muss auf den Namen des Web PubSub-Hubs festgelegt werden, damit die Funktion ausgelöst werden kann. Das Festlegen des Werts als einer mit höherer Priorität wird im Attribut unterstützt. Alternativ kann dies in den App-Einstellungen als globaler Wert festgelegt werden. |
eventType | WebPubSubEventType | Dieser Wert ist erforderlich und muss auf den Ereignistyp Nachrichten festgelegt werden, damit die Funktion ausgelöst wird. Der Wert muss user oder system sein. |
eventName | Ereignisname | Dieser Wert ist erforderlich und muss auf das Nachrichtenereignis festgelegt werden, damit die Funktion ausgelöst wird.
Für system den Ereignistyp sollte der Ereignisname in connect , connected , disconnected .
Bei benutzerdefinierten Unterprotocols lautet message der Ereignisname .
Für vom System unterstützte Unterprotocol json.webpubsub.azure.v1. ist der Ereignisname ein benutzerdefinierter Ereignisname. |
clientProtocols | ClientProtocols | Optional – gibt an, welches Clientprotokoll die Web PubSub-Triggerfunktionen auslösen kann.
Die folgenden Werte für die Groß-/Kleinschreibung sind gültig: all Akzeptiert alle Clientprotokolle. Standardwert.
webPubSub : Akzeptiert nur Web PubSub-Protokolle.
mqtt : Akzeptiert nur MQTT-Protokolle. |
Verbindung | Verbindung | Optional: Name von App-Einstellungen oder einer Einstellungssammlung, der den Upstream-Azure Web PubSub-Dienst angibt. Der Wert wird für die Signaturüberprüfung verwendet. Und der Wert wird standardmäßig automatisch mit App-Einstellungen WebPubSubConnectionString aufgelöst. Und null bedeutet, dass die Validierung nicht benötigt wird und immer erfolgreich ist. |
Wichtig
Um optimale Sicherheit zu gewährleisten, sollte Ihre Funktions-App verwaltete Identitäten verwenden, wenn Sie eine Verbindung mit dem Web PubSub-Dienst herstellen, anstatt eine Verbindungszeichenfolge zu verwenden, die einen freigegebenen geheimen Schlüssel enthält. Weitere Informationen finden Sie unter Autorisieren einer verwalteten Identitätsanforderung mithilfe der Microsoft Entra-ID.
Verwendungen
In C# ist WebPubSubEventRequest
ein vom Typ erkannter Bindungsparameter, und Restparameter sind an den Parameternamen gebunden. Überprüfen Sie die folgende Tabelle auf verfügbare Parameter und Typen.
In schwach typografischer Sprache wie JavaScript wird verwendet, name
function.json
um das Triggerobjekt in Bezug auf die folgende Zuordnungstabelle zu binden. Hierbei wird dataType
in function.json
berücksichtigt, damit die Nachricht richtig konvertiert wird, wenn name
auf data
als Bindungsobjekt für die Auslösereingabe festgelegt ist. Alle Parameter können aus context.bindingData.<BindingName>
gelesen werden und werden in JObject
konvertiert.
Bindungsname | Bindungstyp | BESCHREIBUNG | Eigenschaften |
---|---|---|---|
Anfrage | WebPubSubEventRequest |
Beschreibt die Upstreamanforderung | Die Eigenschaft unterscheidet sich von verschiedenen Ereignistypen, einschließlich abgeleiteter Klassen ConnectEventRequest , , MqttConnectEventRequest , ConnectedEventRequest , MqttConnectedEventRequest , UserEventRequest , DisconnectedEventRequest und MqttDisconnectedEventRequest . |
connectionContext | WebPubSubConnectionContext |
Allgemeine Anforderungsinformationen | EventType, EventName, Hub, ConnectionId, UserId, Headers, Origin, Signature, States |
Daten |
BinaryData ,string ,,Stream byte[] |
Anfordern von Nachrichtendaten vom Client im message -Benutzerereignis |
- |
Datentyp | WebPubSubDataType |
Der Datentyp für Anforderungsnachrichten, der binary , text und json unterstützt |
- |
Ansprüche | IDictionary<string, string[]> |
Benutzeransprüche in der connect -Systemanforderung |
- |
Anfrage | IDictionary<string, string[]> |
Benutzerabfrage in der connect -Systemanforderung |
- |
Unterprotocols | IList<string> |
Verfügbare Unterprotokolle in einer connect -Systemanforderung |
- |
Clientzertifikate | IList<ClientCertificate> |
Eine Liste der Zertifikatfingerabdrücke von Clients in der connect -Systemanforderung |
- |
Grund | string |
Grund in der disconnected -Systemanforderung |
- |
Wichtig
In C# MÜSSEN Parameter mit mehreren unterstützten Typen zuerst angegeben werden, z. B. request
oder data
, anders als der BinaryData
-Standardtyp, damit die Funktionsbindung korrekt ist.
Rückgabeantwort
WebPubSubTrigger
berücksichtigt die vom Kunden zurückgegebene Antwort für synchrone Ereignisse für connect
und das Benutzerereignis. Nur eine passende Antwort wird an den Dienst zurückgesendet, ansonsten wird sie ignoriert. Darüber hinaus unterstützt das Rückgabeobjekt WebPubSubTrigger
Benutzer*innen für SetState()
und ClearStates()
, um die Metadaten für die Verbindung zu verwalten. Und die Erweiterung führt die Ergebnisse des Rückgabewerts mit den ursprünglichen Ergebnissen aus der Anforderung WebPubSubConnectionContext.States
zusammen. Der Wert im vorhandenen Schlüssel wird überschrieben, und der Wert im neuen Schlüssel wird hinzugefügt.
Rückgabetyp | BESCHREIBUNG | Eigenschaften |
---|---|---|
ConnectEventResponse |
Antwort auf ein connect -Ereignis |
Gruppen, Rollen, UserId, Subprotocol |
UserEventResponse |
Antwort auf ein Benutzerereignis | Datentyp, Daten |
EventErrorResponse |
Fehlerantwort für das Synchronisierungsereignis | Code, Fehlermeldung |
*WebPubSubEventResponse |
Basisantworttyp der unterstützten Typen, der bei unsicheren Rückgaben verwendet wird | - |