Use Azure SignalR Local Emulator for serverless development
When developing serverless applications, we provide an Azure SignalR Local Emulator to make the local development and integration easier. The emulator works only for serverless scenarios, for Default mode that the Azure SignalR Service acts as a proxy, you can directly use self-host SignalR to do local development. Also note that emulator only works for Transient transport type (the default one) and doesn't support Persistent transport type.
Features available
- Auth
- Latest Rest API support
- Upstream
Walkthrough
We use this serverless sample to show how to use the emulator.
Clone the sample repo to local
git clone https://github.com/Azure/azure-functions-signalrservice-extension.git cd azure-functions-signalrservice-extension/samples/bidirectional-chat
Install the emulator
dotnet tool install -g Microsoft.Azure.SignalR.Emulator
Or update the emulator to the latest preview version if it's already installed:
dotnet tool update -g Microsoft.Azure.SignalR.Emulator
Run the emulator
asrs-emulator
to list all the available commandsInit the default upstream settings using:
asrs-emulator upstream init
It creates a default
settings.json
into the current folder, with a default upstreamUrlTemplate
ashttp://localhost:7071/runtime/webhooks/signalr
, which is the URL for SignalR's local function trigger:{ "UpstreamSettings": { "Templates": [ { "UrlTemplate": "http://localhost:7071/runtime/webhooks/signalr", "EventPattern": "*", "HubPattern": "*", "CategoryPattern": "*" } ] } }
You could edit the file to make the pattern more restricted, for example, change
HubPattern
from*
tochat
. When the file is modified, its change is hot-loaded into the emulator.Start the emulator
asrs-emulator start
After the emulator is successfully started, it generates the ConnectionString to be used later, for example, the ConnectionString is
Endpoint=http://localhost;Port=8888;AccessKey=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH;Version=1.0;
as the below screenshot shows.The emulator also provides advanced options when start, for example, you can use
asrs-emulator start -p 8999
to customize the port the emulator used. Typeasrs-emulator start --help
to check the options available.Go into subfolder
csharp
and renamelocal.settings.sample.json
tolocal.settings.json
, use the ConnectionString generated by the emulator to fill into the value of the AzureSignalRConnectionString in your local.settings.json. Fill intoAzureWebJobsStorage
your storage connection string, for example,UseDevelopmentStorage=true
when using storage emulator. Save the file and run the function in thecsharp
subfolder withfunc start
.In the browser, navigate to
http://localhost:7071/api/index
to play with the demo.
Next steps
In this article, you learn how to use SignalR Service in your applications. Check the following articles to learn more about SignalR Service.