使用 Azure SignalR 本地仿真器进行无服务器开发

开发无服务器应用程序时,我们提供了 Azure SignalR 本地仿真器,以更轻松地进行本地开发和集成。 仿真器仅适用于无服务器方案,对于 Azure SignalR 服务充当代理的默认模式,可以直接使用自主机 SignalR 进行本地开发。 另请注意,仿真器仅适用于暂时性传输类型(默认类型),不支持持久传输类型。

可用的功能

  • 身份验证
  • 最新 Rest API 支持
  • 上游

重要

本文中出现的原始连接字符串仅用于演示目的。

连接字符串包括应用程序访问 Azure SignalR 服务所需的授权信息。 连接字符串中的访问密钥类似于服务的根密码。 在生产环境中,请始终保护访问密钥。 使用 Azure 密钥保管库安全地管理和轮换密钥,使用 Microsoft Entra ID 保护连接字符串,并使用 Microsoft Entra ID 授权访问

避免将访问密钥分发给其他用户、对其进行硬编码或将其以纯文本形式保存在其他人可以访问的任何位置。 如果你认为访问密钥可能已泄露,请轮换密钥。

演练

我们使用此无服务器示例演示如何使用仿真器。

本文中出现的原始连接字符串仅用于演示目的。 在生产环境中,请始终保护访问密钥。 使用 Azure Key Vault 安全地管理和轮换密钥,使用 Microsoft Entra ID 保护连接字符串,并使用 Microsoft Entra ID 授权访问

  1. 将示例存储库克隆到本地

    git clone https://github.com/Azure/azure-functions-signalrservice-extension.git
    cd azure-functions-signalrservice-extension/samples/bidirectional-chat
    
  2. 安装模拟器

    dotnet tool install  -g Microsoft.Azure.SignalR.Emulator
    

    或者,如果已安装仿真器,请将其更新为最新的预览版本:

    dotnet tool update -g Microsoft.Azure.SignalR.Emulator
    
  3. 运行仿真器asrs-emulator以列出所有可用命令

    可供模拟器使用的命令的屏幕截图。

  4. 使用以下内容初始化默认的上游设置:

    asrs-emulator upstream init
    

    它将默认的settings.json创建到当前文件夹中(默认上游UrlTemplate作为http://localhost:7071/runtime/webhooks/signalr),这是 SignalR 的本地函数触发器的 URL:

    {
    "UpstreamSettings": {
        "Templates": [
        {
            "UrlTemplate": "http://localhost:7071/runtime/webhooks/signalr",
            "EventPattern": "*",
            "HubPattern": "*",
            "CategoryPattern": "*"
        }
        ]
    }
    }
    

    可以编辑文件以使模式更加受限,例如,将HubPattern*更改为chat。 修改文件时,其更改会热加载到仿真器中。

  5. 启动模拟器

    asrs-emulator start
    

    成功启动模拟器后,它会生成稍后要使用的 ConnectionString。

    仿真器在启动时还提供高级选项,例如,可以使用asrs-emulator start -p 8999自定义仿真器使用的端口。 键入asrs-emulator start --help以检查可用选项。

  6. 转到子文件夹csharp并将local.settings.sample.json重命名为local.settings.json,使用仿真器生成的 ConnectionString 填写local.settings.jsonAzureSignalRConnectionString的值。 使用存储仿真器时,请填写AzureWebJobsStorage存储连接字符串(例如UseDevelopmentStorage=true)。 保存文件,并使用func startcsharp子文件夹中运行函数。

    屏幕截图显示本地无服务器函数正在运行。

  7. 在浏览器中,导航到http://localhost:7071/api/index以播放演示。

    屏幕截图显示无服务器聊天演示正在运行。

后续步骤

本文介绍如何在应用程序中使用 SignalR 服务。 查看以下文章以了解有关 SignalR 服务的更多信息。