Compartir a través de


Extensión de Azure Web PubSub de Azure Functions biblioteca cliente de procesos aislados para .NET: versión 1.7.0-beta.1

Esta extensión define los tipos de enlace y los desencadenadores en el proceso de trabajo aislado de .NET para Azure Functions, lo que le permite escribir funciones que responden a cualquier evento publicado en Web PubSub.

Código fuente | Paquete | Documentación de referencia de API | | Documentación del productoMuestras

Introducción

Instalar el paquete

Instale la biblioteca cliente desde NuGet:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.WebPubSub --prerelease

Requisitos previos

Debe tener una suscripción de Azure y un grupo de recursos de Azure con un recurso de Web PubSub. Siga este tutorial paso a paso para crear una instancia de Azure Web PubSub.

Autenticar el cliente

Para permitir que la extensión funcione con el servicio Azure Web PubSub, deberá proporcionar un valor válido ConnectionString.

Puede encontrar las claves del servicio Azure Web PubSub en Azure Portal.

La AzureWebJobsStorage cadena de conexión se usa para conservar la información del punto de control de procesamiento según sea necesario, consulte Consideraciones de almacenamiento.

Para el desarrollo local, use el local.settings.json archivo para almacenar la cadena de conexión, <connection-string> se puede establecer WebPubSubConnectionString en como valor predeterminado admitido en la extensión, o bien puede establecer nombres personalizados asignándolo con Connection = <connection-string> en atributos de enlace de función:

{
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "<connection-string>": "Endpoint=https://<webpubsub-name>.webpubsub.azure.com;AccessKey=<access-key>;Version=1.0;"
  }
}

Cuando se implementa, use la configuración de la aplicación para establecer la cadena de conexión.

Conceptos clave

Uso del enlace de entrada de Web PubSub

Siga el tutorial de enlace de entrada para obtener información sobre el uso de esta extensión para WebPubSubConnection crear una conexión de Websockets al servicio con enlace de entrada.

Uso del enlace de salida de Web PubSub

Siga el tutorial de enlace de salida para obtener información sobre cómo usar esta extensión para publicar mensajes de Web PubSub.

Uso del desencadenador web PubSub

Siga el tutorial de enlace de desencadenador para obtener información sobre cómo desencadenar una función de Azure cuando se envía un evento desde el servicio ascendente.

En Connect los eventos y UserEvent , la función respetará los valores devueltos para devolver el servicio. A continuación, el servicio dependerá de la respuesta para continuar la solicitud o de lo contrario. Las respuestas y eventos se emparejan. Por ejemplo, Connect solo respetará ConnectEventResponse o EventErrorResponse, y omitirá otras devoluciones. Cuando EventErrorResponse se devuelve , el servicio quitará la conexión de cliente.

Ejemplos

Funciones que usan el enlace de entrada de Web PubSub

Use WebPubSubConnectionInput para compilar la dirección URL de negociación del cliente.

[Function("Negotiate")]
public static HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequestData req,
[WebPubSubConnectionInput(Hub = "<web_pubsub_hub>", Connection = "<web_pubsub_connection_name>")] WebPubSubConnection connectionInfo)
{
    var response = req.CreateResponse(HttpStatusCode.OK);
    response.WriteAsJsonAsync(connectionInfo);
    return response;
}

Use WebPubSubContextInput para leer la solicitud de Web PubSub en HttpTrigger. Esto resulta útil cuando se trabaja con Static Web Apps que solo admite HttpTrigger funciones.

// validate method when upstream set as http://<func-host>/api/{event}
[Function("validate")]
public static HttpResponseData Validate(
    [HttpTrigger(AuthorizationLevel.Anonymous, "options")] HttpRequestData req,
    [WebPubSubContextInput] WebPubSubContext wpsReq)
{
    return BuildHttpResponseData(req, wpsReq.Response);
}

// Respond AbuseProtection to put header correctly.
private static HttpResponseData BuildHttpResponseData(HttpRequestData request, SimpleResponse wpsResponse)
{
    var response = request.CreateResponse();
    response.StatusCode = (HttpStatusCode)wpsResponse.Status;
    response.Body = response.Body;
    foreach (var header in wpsResponse.Headers)
    {
        response.Headers.Add(header.Key, header.Value);
    }
    return response;
}

Funciones que usan el enlace de salida de Web PubSub

[Function("Notification")]
[WebPubSubOutput(Hub = "<web_pubsub_hub>", Connection = "<web_pubsub_connection_name>")]
public static WebPubSubAction Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req)
{
    return new SendToAllAction
    {
        Data = BinaryData.FromString($"Hello SendToAll."),
        DataType = WebPubSubDataType.Text
    };
}

Funciones que usan el desencadenador Web PubSub

[Function("Broadcast")]
public static UserEventResponse Run(
[WebPubSubTrigger("<web_pubsub_hub>", WebPubSubEventType.User, "message")] UserEventRequest request)
{
    return new UserEventResponse("[SYSTEM ACK] Received.");
}

Para obtener más información, consulte el archivo Léame de ejemplos.

Solución de problemas

Consulte Supervisión Azure Functions para obtener instrucciones de solución de problemas.

Pasos siguientes

Lea la introducción a La función de Azure o cree una guía de azure Functions.

Contribuciones

Consulte nuestra CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para obtener más información, visite cla.microsoft.com.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.

Impresiones