Tìm hiểu Azure SignalR

Tìm hiểu Azure SignalR

1.Azure SignalR là gì?

Azure SignalR là một dịch vụ thời gian thực vào các ứng dụng thông qua HTTP, cho phép ứng dụng đẩy các nội dung mới đến clients được kết nối mà không phải gửi các resuest đến server.
Ví dụ sử dụng signalR:

  • Game, ứng dụng đấu giá,ứng dụng có tần suất cập nhật dữ liệu cao.

  • Ứng dụng thống kê và đo lường.

  • Chat, Messenger.

  • Đẩy thông báo.

  • Ứng dụng vân chuyển hàng hóa.

  • Lợi ích của việc sử dụng Azure SignalR

  • SignalR hoạt động dựa trên Websockets. Nhưng khi Websockets không khả dụng, SignalR có thể tự động chuyển sang các công nghệ khác như SSE hay Long Pooling để phù hợp với các tính năng được hỗ trợ trên máy chủ và máy khách.
  • SignalR hỗ trợ săn trên ASP.NET Core và ASP.NET.
  • Azure SignalR có thể hoạt động trên nhiều loại clients như web, ứng dụng di động, thiết bị IoT, ứng dụng window. Đồng thời còn cung cấp nhiều loại SDK khác nhau trên nhiều ngôn ngữ như C#, JavaScript, Java..
  • SignalR có thể dễ dàng scale số lượng connection, có thể lên đến hàng triệu kết nối.
  • Loại bỏ SignalR cùng lưu trữ trên Web App Service.
  • Cung cấp nhiều loài API cho việc gửi message, có thể gửi message đến một, toàn bộ hoặc 1 nhóm connection.

2. Tạo một chat room sử dụng SignalR Service

  • Tạo một Azure SignalR resource:

-> Create

-> Review + Create

Sau khi tạo sau SignalR bạn sẽ lấy được key để tạo connection string đến SignalR Service.

  • Tạo một project ASP.NET Core MVC

Sửa file .csproj như sau:

<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <UserSecretsId>SignalRChatRoomEx</UserSecretsId>
</PropertyGroup>

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
    <DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.2" />
</ItemGroup>

</Project>

Mở Package manager Console:

  • Cài đặt package Microsoft.Azure.SignalR
dotnet add package Microsoft.Azure.SignalR
  • Tiếp tục run
dotnet restore

Mở cmd cùng thư mục với thư mục chứa .csproj

dotnet user-secrets set Azure:SignalR:ConnectionString "<Your connection string>"

Lấy connection string lấy được từ bước trước thay vào.

  • Trong file Startup.cs sửa hàm ConfigureServer như sau:
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR()
            .AddAzureSignalR();
}

Sửa hàm config trong Startup.cs như sau:

app.UseRouting();
    app.UseFileServer();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chat");
    });
  • Tạo 1 Hub Class:

Thêm 1 thư mục có folder và nội dung như hình:

  • Tạo một client để nhận message

Download code template clients tại đây
Tạo thêm thư mục wwwroot để chưa file HTML và CSS.

  • Sửa file launchSettings.json để thiết lập môi trường build.
{
    "profiles" : {
        "ChatRoom": {
            "commandName": "Project",
            "launchBrowser": true,
            "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "applicationUrl": "http://localhost:5000/"
        }
    }
}

Kết quả như sau:

Cảm ơn các bạn đã đọc bài!