【发布时间】:2021-12-22 23:18:18
【问题描述】:
我正在使用 .net core 5 进行简单设置:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub");
endpoints.MapControllers();
});
}
有了这个简单的集线器:
public interface IChatClient
{
Task SendMessage( string message);
}
public class ChatHub : Hub<IChatClient>
{
public Task SendMessage(string message)
{
return Clients.All.SendMessage( message);
}
}
这是我的简单控制器:
public class WeatherForecastController : ControllerBase
{
private readonly IHubContext<ChatHub> _hubContext;
public WeatherForecastController(IHubContext<ChatHub> hubContext)
{
_hubContext = hubContext;
}
[HttpGet]
public async Task<IActionResult> Get()
{
await _hubContext.Clients.All.SendAsync("ReceiveMessage", $"Home page loaded at: {DateTime.Now}");
return Ok();
}
}
(为简单起见,只要调用 GET HTTP 端点,就应该发送一条消息)。
C# 控制台客户端是:
async Task Main()
{
var uri = "http://localhost:5000/chatHub";
await using var connection = new HubConnectionBuilder().WithUrl(uri).Build();
await connection.StartAsync();
connection.On<string>("ReceiveMessage", (message) => Console.WriteLine(message));
}
问题:
这两个应用程序都在运行,但是当我刷新页面时,我在客户端没有看到任何消息。 我可能在这里遗漏了一些东西。
【问题讨论】:
标签: c# signalr asp.net-core-webapi