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

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

可用的功能

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

演练

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

  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以列出所有可用命令

    Screenshot of the available commands for the 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,例如,ConnectionString 为Endpoint=http://localhost;Port=8888;AccessKey=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH;Version=1.0;,如以下屏幕截图所示。

    Screenshot of the emulator command is running.

    仿真器在启动时还提供高级选项,例如,可以使用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子文件夹中运行函数。

    Screenshot of the local serverless function is running.

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

    Screenshot of the serverless chat demo is running.

后续步骤

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