použít ASP.NET Core SignalR sBlazor
V tomto kurzu se naučíte základy vytváření aplikací v reálném čase pomocí nástroje SignalR Blazor . Získáte informace o těchto tématech:
- Vytvořit Blazor projekt
- Přidat SignalR klientskou knihovnu
- Přidání SignalR centra
- Přidání SignalR služeb a koncového bodu pro SignalR centrum
- Přidat Razor kód komponenty pro chat
Na konci tohoto kurzu budete mít funkční chatovací aplikaci.
Zobrazit nebo stáhnout ukázkový kód (Jak stáhnout)
Požadavky
- Visual Studio 2022 nebo novější s úlohou vývoje ASP.NET a webu
- .NET 6.0 SDK
Vytvoření hostované Blazor WebAssembly aplikace
Postupujte podle pokynů pro výběr nástrojů:
Poznámka
vyžaduje se Visual Studio 2022 nebo novější a .NET Core SDK 6.0.0 nebo novější.
Vytvoření nového projektu
Vyberte šablonu Blazor WebAssembly aplikace . Vyberte Další.
BlazorWebAssemblySignalRAppdo pole Project název zadejte. Potvrďte správnost záznamu umístění nebo zadejte umístění projektu. Vyberte Další.v dialogovém okně další informace zaškrtněte políčko ASP.NET Core hostované .
Vyberte Vytvořit.
Přidat SignalR klientskou knihovnu
v Průzkumník řešení klikněte pravým tlačítkem myši na
BlazorWebAssemblySignalRApp.Clientprojekt a vyberte spravovat balíčky NuGet.v dialogovém okně spravovat NuGet balíčky potvrďte, že je zdroj balíčku nastavený na
nuget.org.Když je vybraná možnost Procházet ,
Microsoft.AspNetCore.SignalR.Clientdo vyhledávacího pole zadejte.Ve výsledcích hledání vyberte
Microsoft.AspNetCore.SignalR.Clientbalíček. Nastavte verzi tak, aby odpovídala sdílené architektuře aplikace. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn , vyberte OK.
Pokud se zobrazí dialogové okno pro přijetí licence , Vyberte možnost Souhlasím , pokud souhlasíte s licenčními podmínkami.
Přidání SignalR centra
V BlazorWebAssemblySignalRApp.Server projektu vytvořte Hubs složku (plural) a přidejte následující ChatHub třídu ( Hubs/ChatHub.cs ):
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorWebAssemblySignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Přidání služeb a koncového bodu pro SignalR centrum
V
BlazorWebAssemblySignalRApp.Serverprojektu otevřeteProgram.cssoubor.Přidejte do
ChatHubhorní části souboru obor názvů pro třídu:using BlazorWebAssemblySignalRApp.Server.Hubs;Přidejte SignalR služby middlewaru pro komprimaci a odezvu do
Program.cs:builder.Services.AddSignalR(); builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); });V
Program.cs:- V horní části Konfigurace kanálu zpracování použijte middleware pro kompresi odpovědí.
- Mezi koncovými body řadičů a Fallback na straně klienta přidejte koncový bod pro centrum.
app.UseResponseCompression(); if (app.Environment.IsDevelopment()) { app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseRouting(); app.MapRazorPages(); app.MapControllers(); app.MapHub<ChatHub>("/chathub"); app.MapFallbackToFile("index.html"); app.Run();
Přidat Razor kód komponenty pro chat
V
BlazorWebAssemblySignalRApp.Clientprojektu otevřetePages/Index.razorsoubor.Nahraďte kód následujícím kódem:
@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavigationManager @implements IAsyncDisposable <PageTitle>Index</PageTitle> <div class="form-group"> <label> User: <input @bind="userInput" /> </label> </div> <div class="form-group"> <label> Message: <input @bind="messageInput" size="50" /> </label> </div> <button @onclick="Send" disabled="@(!IsConnected)">Send</button> <hr> <ul id="messagesList"> @foreach (var message in messages) { <li>@message</li> } </ul> @code { private HubConnection? hubConnection; private List<string> messages = new List<string>(); private string? userInput; private string? messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavigationManager.ToAbsoluteUri("/chathub")) .Build(); hubConnection.On<string, string>("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; messages.Add(encodedMsg); StateHasChanged(); }); await hubConnection.StartAsync(); } private async Task Send() { if (hubConnection is not null) { await hubConnection.SendAsync("SendMessage", userInput, messageInput); } } public bool IsConnected => hubConnection?.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { if (hubConnection is not null) { await hubConnection.DisposeAsync(); } } }
Spuštění aplikace
Postupujte podle pokynů pro vaše nástroje:
V Průzkumník řešení vyberte
BlazorWebAssemblySignalRApp.Serverprojekt. Stisknutím klávesy F5 spusťte aplikaci s laděním nebo stisknutím Klávesy Ctrl + F5 spusťte aplikaci bez ladění.Zkopírujte adresu URL z adresního řádku, otevřete jinou instanci nebo kartu prohlížeče a vložte ji do adresního řádku.
Zvolte některý z prohlížečů, zadejte název a zprávu a vyberte tlačítko pro odeslání zprávy. Název a zpráva se okamžitě zobrazí na obou stránkách:

Uvozovky: StarÍr VI: The Undiscovered Country © 1991 Paramount
Vytvoření Blazor Server aplikace
Postupujte podle pokynů pro výběr nástrojů:
Poznámka
Visual Studio 2022 nebo novější a .NET Core SDK 6.0.0 nebo novější.
Vytvoření nového projektu
Vyberte Blazor Server šablonu Aplikace. Vyberte Další.
Do
BlazorServerSignalRApppole Project zadejte . Ověřte správnost položky Location (Umístění) nebo zadejte umístění projektu. Vyberte Další.Vyberte Vytvořit.
Přidání SignalR klientské knihovny
V Průzkumník řešení klikněte pravým tlačítkem na projekt a
BlazorServerSignalRAppvyberte Spravovat NuGet balíčky.V dialogovém okně NuGet balíčků ověřte, že zdroj balíčku je nastavený na
nuget.org.Vyberte Procházet a do
Microsoft.AspNetCore.SignalR.Clientvyhledávacího pole zadejte .Ve výsledcích hledání vyberte
Microsoft.AspNetCore.SignalR.Clientbalíček . Nastavte verzi tak, aby odpovídala sdílenému rozhraní aplikace. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn, vyberte OK.
Pokud se zobrazí dialogové okno Souhlas s podmínkami licence, vyberte Souhlasím, pokud souhlasíte s licenčními podmínkami.
Přidání SignalR centra
Vytvořte složku Hubs (v množném čísle) a přidejte následující ChatHub třídu ( Hubs/ChatHub.cs ):
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorServerSignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Přidání služeb a koncového bodu SignalR pro centrum
Otevřete soubor
Program.cs.Na začátek souboru Microsoft.AspNetCore.ResponseCompression přidejte obory názvů pro a
ChatHubtřídu :using Microsoft.AspNetCore.ResponseCompression; using BlazorServerSignalRApp.Server.Hubs;Přidejte služby middlewaru pro kompresi odpovědí do
Program.cs:builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton<WeatherForecastService>(); builder.Services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); });V
Program.cs:- V horní části konfigurace kanálu zpracování použijte middleware pro kompresi odpovědí.
- Mezi koncové body pro mapování centra a záložní bod na straně klienta Blazor přidejte koncový bod pro centrum.
app.UseResponseCompression(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.MapBlazorHub(); app.MapHub<ChatHub>("/chathub"); app.MapFallbackToPage("/_Host"); app.Run();
Přidat Razor kód komponenty pro chat
Otevřete soubor
Pages/Index.razor.Nahraďte kód následujícím kódem:
@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavigationManager @implements IAsyncDisposable <PageTitle>Index</PageTitle> <div class="form-group"> <label> User: <input @bind="userInput" /> </label> </div> <div class="form-group"> <label> Message: <input @bind="messageInput" size="50" /> </label> </div> <button @onclick="Send" disabled="@(!IsConnected)">Send</button> <hr> <ul id="messagesList"> @foreach (var message in messages) { <li>@message</li> } </ul> @code { private HubConnection? hubConnection; private List<string> messages = new List<string>(); private string? userInput; private string? messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavigationManager.ToAbsoluteUri("/chathub")) .Build(); hubConnection.On<string, string>("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; messages.Add(encodedMsg); StateHasChanged(); }); await hubConnection.StartAsync(); } private async Task Send() { if (hubConnection is not null) { await hubConnection.SendAsync("SendMessage", userInput, messageInput); } } public bool IsConnected => hubConnection?.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { if (hubConnection is not null) { await hubConnection.DisposeAsync(); } } }
Spuštění aplikace
Postupujte podle pokynů pro vaše nástroje:
Stiskněte klávesu F5 ke spuštění aplikace s laděním nebo stisknutím klávesy CTRL + F5 pro spuštění aplikace bez ladění.
Zkopírujte adresu URL z panelu Adresa, otevřete jinou instanci nebo kartu prohlížeče a vložte adresu URL do panelu Adresa.
Zvolte buď prohlížeč, zadejte jméno a zprávu a vyberte tlačítko pro odeslání zprávy. Název a zpráva se okamžitě zobrazí na obou stránkách:

Další kroky
V tomto kurzu jste se naučili:
- Vytvořit Blazor projekt
- Přidat SignalR klientskou knihovnu
- Přidání SignalR centra
- Přidání SignalR služeb a koncového bodu pro SignalR centrum
- Přidat Razor kód komponenty pro chat
Další informace o vytváření Blazor aplikací najdete v Blazor dokumentaci:
Úvod do ASP.NET Core Blazor Ověřování nosných tokenů s Identity událostmi serveru, WebSockets a Server-Sent
Další zdroje informací
V tomto kurzu se naučíte základy vytváření aplikací v reálném čase pomocí nástroje SignalR Blazor . Získáte informace o těchto tématech:
- Vytvořit Blazor projekt
- Přidat SignalR klientskou knihovnu
- Přidání SignalR centra
- Přidání SignalR služeb a koncového bodu pro SignalR centrum
- Přidat Razor kód komponenty pro chat
Na konci tohoto kurzu budete mít funkční chatovací aplikaci.
Zobrazit nebo stáhnout ukázkový kód (Jak stáhnout)
Požadavky
- Visual Studio 2019 16,10 nebo novější s úlohou vývoje ASP.NET a webu
- .NET 5.0 SDK
Vytvoření hostované Blazor WebAssembly aplikace
Postupujte podle pokynů pro výběr nástrojů:
Poznámka
vyžaduje se Visual Studio 16,10 nebo novější a .NET Core SDK 5.0.0 nebo novější.
Vytvoření nového projektu
Vyberte šablonu Blazor WebAssembly aplikace . Vyberte Další.
BlazorWebAssemblySignalRAppdo pole Project název zadejte. Potvrďte správnost záznamu umístění nebo zadejte umístění projektu. Vyberte Další.v dialogovém okně další informace zaškrtněte políčko ASP.NET Core hostované .
Vyberte Vytvořit.
Přidání SignalR klientské knihovny
V Průzkumník řešení klikněte pravým tlačítkem na projekt a
BlazorWebAssemblySignalRApp.Clientvyberte Spravovat NuGet balíčky.V dialogovém okně NuGet balíčků ověřte, že zdroj balíčku je nastavený na
nuget.org.Vyberte Procházet a do
Microsoft.AspNetCore.SignalR.Clientvyhledávacího pole zadejte .Ve výsledcích hledání vyberte
Microsoft.AspNetCore.SignalR.Clientbalíček . Nastavte verzi tak, aby odpovídala sdílenému rozhraní aplikace. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn, vyberte OK.
Pokud se zobrazí dialogové okno Souhlas s podmínkami licence, vyberte Souhlasím, pokud souhlasíte s licenčními podmínkami.
Přidání SignalR centra
V BlazorWebAssemblySignalRApp.Server projektu vytvořte složku Hubs (v množném čísle) a přidejte následující ChatHub třídu ( Hubs/ChatHub.cs ):
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorWebAssemblySignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Přidání služeb a koncového bodu SignalR pro centrum
V
BlazorWebAssemblySignalRApp.Serverprojektu otevřeteStartup.cssoubor .Na začátek souboru
ChatHubpřidejte obor názvů pro třídu :using BlazorWebAssemblySignalRApp.Server.Hubs;Přidejte SignalR middlewarové služby komprese odpovědí a přidejte je do
Startup.ConfigureServices:public void ConfigureServices(IServiceCollection services) { services.AddSignalR(); services.AddControllersWithViews(); services.AddRazorPages(); services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); }); }V
Startup.Configure:- V horní části konfigurace kanálu zpracování použijte middleware pro kompresi odpovědí.
- Mezi koncové body pro kontrolery a záložní bod na straně klienta přidejte koncový bod pro centrum.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseResponseCompression(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); endpoints.MapControllers(); endpoints.MapHub<ChatHub>("/chathub"); endpoints.MapFallbackToFile("index.html"); }); }
Přidání Razor kódu komponenty pro chat
V
BlazorWebAssemblySignalRApp.Clientprojektu otevřetePages/Index.razorsoubor .Nahraďte kód následujícím kódem:
@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavigationManager @implements IAsyncDisposable <div class="form-group"> <label> User: <input @bind="userInput" /> </label> </div> <div class="form-group"> <label> Message: <input @bind="messageInput" size="50" /> </label> </div> <button @onclick="Send" disabled="@(!IsConnected)">Send</button> <hr> <ul id="messagesList"> @foreach (var message in messages) { <li>@message</li> } </ul> @code { private HubConnection hubConnection; private List<string> messages = new List<string>(); private string userInput; private string messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavigationManager.ToAbsoluteUri("/chathub")) .Build(); hubConnection.On<string, string>("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; messages.Add(encodedMsg); StateHasChanged(); }); await hubConnection.StartAsync(); } async Task Send() => await hubConnection.SendAsync("SendMessage", userInput, messageInput); public bool IsConnected => hubConnection.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { if (hubConnection is not null) { await hubConnection.DisposeAsync(); } } }
Spuštění aplikace
Postupujte podle pokynů pro vaše nástroje:
V Průzkumník řešení vyberte
BlazorWebAssemblySignalRApp.Serverprojekt. Stisknutím klávesy F5 spusťte aplikaci s laděním nebo stisknutím Klávesy Ctrl + F5 spusťte aplikaci bez ladění.Zkopírujte adresu URL z adresního řádku, otevřete jinou instanci nebo kartu prohlížeče a vložte tuto adresu URL do adresního řádku.
Zvolte některý z prohlížečů, zadejte název a zprávu a vyberte tlačítko pro odeslání zprávy. Název a zpráva se okamžitě zobrazí na obou stránkách:

Uvozovky: StarÍr VI: The Undiscovered Country © 1991 Paramount
Vytvoření Blazor Server aplikace
Postupujte podle pokynů pro výběr nástrojů:
Poznámka
Visual Studio 16.10 nebo novější a .NET Core SDK 5.0.0 nebo novější.
Vytvoření nového projektu
Vyberte Blazor Server šablonu Aplikace. Vyberte Další.
Do
BlazorServerSignalRApppole Project zadejte . Ověřte správnost položky Location (Umístění) nebo zadejte umístění projektu. Vyberte Další.Vyberte Vytvořit.
Přidání SignalR klientské knihovny
V Průzkumník řešení klikněte pravým tlačítkem na projekt a
BlazorServerSignalRAppvyberte Spravovat NuGet balíčky.V dialogovém okně NuGet balíčků ověřte, že zdroj balíčku je nastavený na
nuget.org.Vyberte Procházet a do
Microsoft.AspNetCore.SignalR.Clientvyhledávacího pole zadejte .Ve výsledcích hledání vyberte
Microsoft.AspNetCore.SignalR.Clientbalíček . Nastavte verzi tak, aby odpovídala sdílenému rozhraní aplikace. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn, vyberte OK.
Pokud se zobrazí dialogové okno Souhlas s podmínkami licence, vyberte Souhlasím, pokud souhlasíte s licenčními podmínkami.
Přidání SignalR centra
Vytvořte složku Hubs (v množném čísle) a přidejte následující ChatHub třídu ( Hubs/ChatHub.cs ):
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorServerSignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Přidání služeb a koncového bodu SignalR pro centrum
Otevřete soubor
Startup.cs.Na začátek souboru Microsoft.AspNetCore.ResponseCompression přidejte obory názvů pro a
ChatHubtřídu :using Microsoft.AspNetCore.ResponseCompression; using BlazorServerSignalRApp.Server.Hubs;Přidejte middlewarové služby komprese odpovědí do
Startup.ConfigureServices:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddServerSideBlazor(); services.AddSingleton<WeatherForecastService>(); services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); }); }V
Startup.Configure:- V horní části konfigurace kanálu zpracování použijte middleware pro kompresi odpovědí.
- Mezi koncové body pro mapování centra a záložní bod na straně klienta přidejte koncový Blazor bod pro centrum.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseResponseCompression(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapBlazorHub(); endpoints.MapHub<ChatHub>("/chathub"); endpoints.MapFallbackToPage("/_Host"); }); }
Přidání Razor kódu komponenty pro chat
Otevřete soubor
Pages/Index.razor.Nahraďte kód následujícím kódem:
@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavigationManager @implements IAsyncDisposable <div class="form-group"> <label> User: <input @bind="userInput" /> </label> </div> <div class="form-group"> <label> Message: <input @bind="messageInput" size="50" /> </label> </div> <button @onclick="Send" disabled="@(!IsConnected)">Send</button> <hr> <ul id="messagesList"> @foreach (var message in messages) { <li>@message</li> } </ul> @code { private HubConnection hubConnection; private List<string> messages = new List<string>(); private string userInput; private string messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavigationManager.ToAbsoluteUri("/chathub")) .Build(); hubConnection.On<string, string>("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; messages.Add(encodedMsg); StateHasChanged(); }); await hubConnection.StartAsync(); } async Task Send() => await hubConnection.SendAsync("SendMessage", userInput, messageInput); public bool IsConnected => hubConnection.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { if (hubConnection is not null) { await hubConnection.DisposeAsync(); } } }
Spuštění aplikace
Postupujte podle pokynů pro vaše nástroje:
Stisknutím klávesy F5 spusťte aplikaci s laděním nebo stisknutím Klávesy Ctrl + F5 spusťte aplikaci bez ladění.
Zkopírujte adresu URL z adresního řádku, otevřete jinou instanci nebo kartu prohlížeče a vložte ji do adresního řádku.
Zvolte některý z prohlížečů, zadejte název a zprávu a vyberte tlačítko pro odeslání zprávy. Název a zpráva se okamžitě zobrazí na obou stránkách:

Uvozovky: StarÍr VI: The Undiscovered Country © 1991 Paramount
Další kroky
V tomto kurzu jste se naučili:
- Vytvoření Blazor projektu
- Přidání SignalR klientské knihovny
- Přidání SignalR centra
- Přidání SignalR služeb a koncového bodu pro SignalR centrum
- Přidání Razor kódu komponenty pro chat
Další informace o vytváření Blazor aplikací najdete v Blazor dokumentaci:
Úvod do ASP.NET Core Blazor Ověřování pomocí tokenu Bearer Identity pomocí serveru, protokolu WebSocket a Server-Sent událostí
Další zdroje informací
V tomto kurzu se naučíte základy vytváření aplikací v reálném čase s SignalR využitím Blazor . Získáte informace o těchto tématech:
- Vytvoření Blazor projektu
- Přidání SignalR klientské knihovny
- Přidání SignalR centra
- Přidání SignalR služeb a koncového bodu pro SignalR centrum
- Přidání Razor kódu komponenty pro chat
Na konci tohoto kurzu budete mít funkční chatovací aplikaci.
Zobrazení nebo stažení ukázkového kódu (stažení)
Požadavky
- Visual Studio 2019 16.6 nebo novější s úlohou vývoje ASP.NET a webu
- .NET Core 3.1 SDK
Vytvoření hostované Blazor WebAssembly aplikace
Postupujte podle pokynů pro výběr nástrojů:
Poznámka
vyžaduje se Visual Studio 16,6 nebo novější a .NET Core SDK 3.1.300 nebo novější.
Vytvoření nového projektu
Vyberte šablonu Blazor WebAssembly aplikace . Vyberte Další.
BlazorWebAssemblySignalRAppdo pole Project název zadejte. Potvrďte správnost záznamu umístění nebo zadejte umístění projektu. Vyberte Další.v dialogovém okně další informace zaškrtněte políčko ASP.NET Core hostované .
Vyberte Vytvořit.
Přidat SignalR klientskou knihovnu
v Průzkumník řešení klikněte pravým tlačítkem myši na
BlazorWebAssemblySignalRApp.Clientprojekt a vyberte spravovat balíčky NuGet.v dialogovém okně spravovat NuGet balíčky potvrďte, že je zdroj balíčku nastavený na
nuget.org.Když je vybraná možnost Procházet ,
Microsoft.AspNetCore.SignalR.Clientdo vyhledávacího pole zadejte.Ve výsledcích hledání vyberte
Microsoft.AspNetCore.SignalR.Clientbalíček. Nastavte verzi tak, aby odpovídala sdílené architektuře aplikace. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn , vyberte OK.
Pokud se zobrazí dialogové okno pro přijetí licence , Vyberte možnost Souhlasím , pokud souhlasíte s licenčními podmínkami.
Přidání SignalR centra
V BlazorWebAssemblySignalRApp.Server projektu vytvořte Hubs složku (plural) a přidejte následující ChatHub třídu ( Hubs/ChatHub.cs ):
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorWebAssemblySignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Přidání služeb a koncového bodu pro SignalR centrum
V
BlazorWebAssemblySignalRApp.Serverprojektu otevřeteStartup.cssoubor.Přidejte do
ChatHubhorní části souboru obor názvů pro třídu:using BlazorWebAssemblySignalRApp.Server.Hubs;Přidejte SignalR služby middlewaru pro komprimaci a odezvu do
Startup.ConfigureServices:public void ConfigureServices(IServiceCollection services) { services.AddSignalR(); services.AddControllersWithViews(); services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); }); }V
Startup.Configure:- V horní části Konfigurace kanálu zpracování použijte middleware pro kompresi odpovědí.
- Mezi koncovými body řadičů a Fallback na straně klienta přidejte koncový bod pro centrum.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseResponseCompression(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapHub<ChatHub>("/chathub"); endpoints.MapFallbackToFile("index.html"); }); }
Přidat Razor kód komponenty pro chat
V
BlazorWebAssemblySignalRApp.Clientprojektu otevřetePages/Index.razorsoubor.Nahraďte kód následujícím kódem:
@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavigationManager @implements IDisposable <div class="form-group"> <label> User: <input @bind="userInput" /> </label> </div> <div class="form-group"> <label> Message: <input @bind="messageInput" size="50" /> </label> </div> <button @onclick="Send" disabled="@(!IsConnected)">Send</button> <hr> <ul id="messagesList"> @foreach (var message in messages) { <li>@message</li> } </ul> @code { private HubConnection hubConnection; private List<string> messages = new List<string>(); private string userInput; private string messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavigationManager.ToAbsoluteUri("/chathub")) .Build(); hubConnection.On<string, string>("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; messages.Add(encodedMsg); StateHasChanged(); }); await hubConnection.StartAsync(); } async Task Send() => await hubConnection.SendAsync("SendMessage", userInput, messageInput); public bool IsConnected => hubConnection.State == HubConnectionState.Connected; public void Dispose() { _ = hubConnection?.DisposeAsync(); } }
Spuštění aplikace
Postupujte podle pokynů pro vaše nástroje:
V Průzkumník řešení vyberte
BlazorWebAssemblySignalRApp.Serverprojekt. Stiskněte klávesu F5 ke spuštění aplikace s laděním nebo stisknutím klávesy CTRL + F5 pro spuštění aplikace bez ladění.Zkopírujte adresu URL z panelu Adresa, otevřete jinou instanci nebo kartu prohlížeče a vložte adresu URL do panelu Adresa.
Zvolte buď prohlížeč, zadejte jméno a zprávu a vyberte tlačítko pro odeslání zprávy. Název a zpráva se okamžitě zobrazí na obou stránkách:

Vytvoření Blazor Server aplikace
Postupujte podle pokynů pro výběr nástrojů:
Poznámka
vyžaduje se Visual Studio 16,6 nebo novější a .NET Core SDK 3.1.300 nebo novější.
Vytvoření nového projektu
Vyberte šablonu Blazor Server aplikace . Vyberte Další.
BlazorServerSignalRAppdo pole Project název zadejte. Potvrďte správnost záznamu umístění nebo zadejte umístění projektu. Vyberte Další.Vyberte Vytvořit.
Přidat SignalR klientskou knihovnu
v Průzkumník řešení klikněte pravým tlačítkem myši na
BlazorServerSignalRAppprojekt a vyberte spravovat balíčky NuGet.v dialogovém okně spravovat NuGet balíčky potvrďte, že je zdroj balíčku nastavený na
nuget.org.Když je vybraná možnost Procházet ,
Microsoft.AspNetCore.SignalR.Clientdo vyhledávacího pole zadejte.Ve výsledcích hledání vyberte
Microsoft.AspNetCore.SignalR.Clientbalíček. Nastavte verzi tak, aby odpovídala sdílené architektuře aplikace. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn , vyberte OK.
Pokud se zobrazí dialogové okno pro přijetí licence , Vyberte možnost Souhlasím , pokud souhlasíte s licenčními podmínkami.
Přidání balíčku System. text. encodings. Web
tato část platí jenom pro aplikace ASP.NET Core verze 3. x.
v důsledku problému s rozlišením balíčku při použití System.Text.Json 5. x v aplikaci ASP.NET Core 3. x projekt vyžaduje odkaz na balíček pro System.Text.Encodings.Web . Základní problém bude vyřešen v budoucí verzi opravy rozhraní .NET 5. Další informace naleznete v tématu System. text. JSON definuje netcoreapp 3.0 bez závislostí (dotnet/runtime #45560).
Chcete-li přidat System.Text.Encodings.Web do projektu, postupujte podle pokynů pro výběr nástrojů:
v Průzkumník řešení klikněte pravým tlačítkem myši na
BlazorServerSignalRAppprojekt a vyberte spravovat balíčky NuGet.v dialogovém okně spravovat NuGet balíčky potvrďte, že je zdroj balíčku nastavený na
nuget.org.Když je vybraná možnost Procházet ,
System.Text.Encodings.Webdo vyhledávacího pole zadejte.Ve výsledcích hledání vyberte
System.Text.Encodings.Webbalíček. Vyberte verzi balíčku, která odpovídá používanému sdílenému rozhraní. Vyberte Nainstalovat.Pokud se zobrazí dialogové okno Náhled změn , vyberte OK.
Pokud se zobrazí dialogové okno pro přijetí licence , Vyberte možnost Souhlasím , pokud souhlasíte s licenčními podmínkami.
Přidání SignalR centra
Vytvořte Hubs složku (plural) a přidejte následující ChatHub třídu ( Hubs/ChatHub.cs ):
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
namespace BlazorServerSignalRApp.Server.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Přidání služeb a koncového bodu pro SignalR centrum
Otevřete soubor
Startup.cs.Na začátek souboru Microsoft.AspNetCore.ResponseCompression přidejte obory názvů pro a
ChatHubtřídu :using Microsoft.AspNetCore.ResponseCompression; using BlazorServerSignalRApp.Server.Hubs;Přidejte middlewarové služby komprese odpovědí do
Startup.ConfigureServices:public void ConfigureServices(IServiceCollection services) { services.AddRazorPages(); services.AddServerSideBlazor(); services.AddSingleton<WeatherForecastService>(); services.AddResponseCompression(opts => { opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat( new[] { "application/octet-stream" }); }); }V
Startup.Configure:- V horní části konfigurace kanálu zpracování použijte middleware pro kompresi odpovědí.
- Mezi koncové body pro mapování centra a záložní bod na straně klienta přidejte koncový Blazor bod pro centrum.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseResponseCompression(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapBlazorHub(); endpoints.MapHub<ChatHub>("/chathub"); endpoints.MapFallbackToPage("/_Host"); }); }
Přidání Razor kódu komponenty pro chat
Otevřete soubor
Pages/Index.razor.Nahraďte kód následujícím kódem:
@page "/" @using Microsoft.AspNetCore.SignalR.Client @inject NavigationManager NavigationManager @implements IAsyncDisposable <div class="form-group"> <label> User: <input @bind="userInput" /> </label> </div> <div class="form-group"> <label> Message: <input @bind="messageInput" size="50" /> </label> </div> <button @onclick="Send" disabled="@(!IsConnected)">Send</button> <hr> <ul id="messagesList"> @foreach (var message in messages) { <li>@message</li> } </ul> @code { private HubConnection hubConnection; private List<string> messages = new List<string>(); private string userInput; private string messageInput; protected override async Task OnInitializedAsync() { hubConnection = new HubConnectionBuilder() .WithUrl(NavigationManager.ToAbsoluteUri("/chathub")) .Build(); hubConnection.On<string, string>("ReceiveMessage", (user, message) => { var encodedMsg = $"{user}: {message}"; messages.Add(encodedMsg); StateHasChanged(); }); await hubConnection.StartAsync(); } async Task Send() => await hubConnection.SendAsync("SendMessage", userInput, messageInput); public bool IsConnected => hubConnection.State == HubConnectionState.Connected; public async ValueTask DisposeAsync() { await hubConnection?.DisposeAsync(); } }
Spuštění aplikace
Postupujte podle pokynů pro vaše nástroje:
Stisknutím klávesy F5 spusťte aplikaci s laděním nebo stisknutím Klávesy Ctrl + F5 spusťte aplikaci bez ladění.
Zkopírujte adresu URL z adresního řádku, otevřete jinou instanci nebo kartu prohlížeče a vložte ji do adresního řádku.
Zvolte některý z prohlížečů, zadejte název a zprávu a vyberte tlačítko pro odeslání zprávy. Název a zpráva se okamžitě zobrazí na obou stránkách:

Uvozovky: StarÍr VI: The Undiscovered Country © 1991 Paramount
Další kroky
V tomto kurzu jste se naučili:
- Vytvoření Blazor projektu
- Přidání SignalR klientské knihovny
- Přidání SignalR centra
- Přidání SignalR služeb a koncového bodu pro SignalR centrum
- Přidání Razor kódu komponenty pro chat
Další informace o vytváření Blazor aplikací najdete v Blazor dokumentaci:
Úvod do ASP.NET Core Blazor Ověřování pomocí tokenu Bearer Identity pomocí serveru, protokolu WebSocket a Server-Sent událostí