你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 .NET 的 Azure WebJobs Web PubSub 客户端库 - 版本 1.7.0

此扩展提供在 Azure Functions 中接收 Web PubSub Webhook 调用的功能,使你能够轻松编写响应发布到 Web PubSub 的任何事件的函数。

源代码 | | API 参考文档 | 产品文档 | 示例

入门

安装包

使用 NuGet 安装 Web PubSub 扩展:

dotnet add package Microsoft.Azure.WebJobs.Extensions.WebPubSub

先决条件

必须有一个 Azure 订阅 和一个包含 Web PubSub 资源的 Azure 资源组。 按照此 分步教程 创建 Azure Web PubSub 实例。

验证客户端

若要让扩展与 Azure Web PubSub 服务一起使用,需要提供有效的 ConnectionString

可以在 Azure 门户中找到 Azure Web PubSub 服务的密钥

连接字符串 AzureWebJobsStorage 用于根据需要保留处理检查点信息,请参阅 存储注意事项

对于本地开发, local.settings.json 请使用 文件来存储连接字符串, <connection-string> 可以将 设置为 WebPubSubConnectionString 作为扩展中支持的默认名称,也可以通过在函数绑定属性中使用 映射来 Connection = <connection-string> 设置自定义名称:

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

部署时,请使用 应用程序设置 来设置连接字符串。

关键概念

使用 Web PubSub 输入绑定

请按照 输入绑定教程 了解如何使用此扩展进行生成 WebPubSubConnection ,以使用输入绑定创建与服务的 Websocket 连接。

使用 Web PubSub 输出绑定

请按照 输出绑定教程 了解如何使用此扩展发布 Web PubSub 消息。

使用 Web PubSub 触发器

请遵循触发器绑定教程,了解如何在从服务上游发送事件时触发 Azure 函数。

在 和 UserEvent 事件中Connect,函数将遵循返回值以发送回服务。 然后,服务将取决于响应以继续请求,否则。 响应和事件是配对的。 例如, Connect 将仅尊重 ConnectEventResponseEventErrorResponse,而忽略其他返回。 返回 时 EventErrorResponse ,服务将删除客户端连接。 请按照 触发器绑定返回值教程 了解如何使用触发器返回值。

示例

使用 Web PubSub 输入绑定的函数

public static class WebPubSubConnectionBindingFunction
{
    [FunctionName("WebPubSubConnectionBindingFunction")]
    public static WebPubSubConnection Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req,
        [WebPubSubConnection(Hub = "hub", UserId = "{query.userid}", Connection = "<connection-string>")] WebPubSubConnection connection)
    {
        Console.WriteLine("login");
        return connection;
    }
}

使用 Web PubSub 输出绑定的函数

public static class WebPubSubOutputBindingFunction
{
    [FunctionName("WebPubSubOutputBindingFunction")]
    public static async Task RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req,
        [WebPubSub(Hub = "hub", Connection = "<connection-string>")] IAsyncCollector<WebPubSubAction> action)
    {
        await action.AddAsync(WebPubSubAction.CreateSendToAllAction("Hello Web PubSub!", WebPubSubDataType.Text));
    }
}

使用 Web PubSub 触发器的函数

public static class WebPubSubTriggerFunction
{
    [FunctionName("WebPubSubTriggerFunction")]
    public static void Run(
        ILogger logger,
        [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] UserEventRequest request,
        string data,
        WebPubSubDataType dataType)
    {
        logger.LogInformation("Request from: {user}, data: {data}, dataType: {dataType}",
            request.ConnectionContext.UserId, data, dataType);
    }
}

使用 Web PubSub 触发器返回值的函数

public static class WebPubSubTriggerReturnValueFunction
{
    [FunctionName("WebPubSubTriggerReturnValueFunction")]
    public static UserEventResponse Run(
        [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] UserEventRequest request)
    {
        return request.CreateResponse(BinaryData.FromString("ack"), WebPubSubDataType.Text);
    }
}

疑难解答

有关故障排除指南,请参阅监视Azure Functions

后续步骤

阅读 Azure 函数简介创建 Azure 函数指南

供稿

有关构建、测试和参与此库的详细信息,请参阅我们的 CONTRIBUTING.md

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。

曝光数