10 July, 2022

SignalR Notes

Server

Update Program.cs

services.AddSignalR();

//...

// what is UseDefaultFiles for?
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapHub<ChatHub>("/hub");

Create ChatHub.cs

using Microsoft.AspNetCore.SignalR;

namespace Teach.WebApi.Hubs;

public class ChatHub : Hub
{
    public async Task NewMessage(long username, string message) =>
        await Clients.All.SendAsync("messageReceived", username, message);
}

Client

npm i -S @microsoft/signalr

See https://docs.microsoft.com/en-us/aspnet/core/signalr/introduction?view=aspnetcore-5.0

JavaScript client https://docs.microsoft.com/en-us/aspnet/core/signalr/javascript-client?view=aspnetcore-5.0

Hubs https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-5.0

Create a new webapp project ASP.NET Core Project

Check if libman is installed with libman --version

dotnet tool install -g Microsoft.Web.LibraryManager.Cli

Install client JavaScript files:

libman install @microsoft/signalr@latest -p unpkg -d wwwroot/js/signalr --files dist/browser/signalr.js --files dist/browser/signalr.min.js

Build and Start

dotnet watch run -p SignalRChat.csproj