renamed project to SignalRApp
parent
4058dfd816
commit
84803be924
|
@ -0,0 +1,27 @@
|
||||||
|
using Microsoft.AspNetCore.SignalR;
|
||||||
|
|
||||||
|
namespace SignalRApp.Hubs;
|
||||||
|
public class UserMessage
|
||||||
|
{
|
||||||
|
public required string Sender { get; set; }
|
||||||
|
public required string Content { get; set; }
|
||||||
|
public DateTime SentTime { get; set; }
|
||||||
|
}
|
||||||
|
public class MessagingHub : Hub
|
||||||
|
{
|
||||||
|
private static readonly List<UserMessage> MessageHistory = new List<UserMessage>();
|
||||||
|
public async Task PostMessage(string content)
|
||||||
|
{
|
||||||
|
var senderId = Context.ConnectionId;
|
||||||
|
var userMessage = new UserMessage
|
||||||
|
{
|
||||||
|
Sender = senderId,
|
||||||
|
Content = content,
|
||||||
|
SentTime = DateTime.UtcNow
|
||||||
|
};
|
||||||
|
MessageHistory.Add(userMessage);
|
||||||
|
await Clients.Others.SendAsync("ReceiveMessage", senderId, content, userMessage.SentTime);
|
||||||
|
}
|
||||||
|
public async Task RetrieveMessageHistory() =>
|
||||||
|
await Clients.Caller.SendAsync("MessageHistory", MessageHistory);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
using SignalRApp.Hubs;
|
||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
// Configure CORS
|
||||||
|
builder.Services.AddCors(options =>
|
||||||
|
{
|
||||||
|
options.AddPolicy("CorsPolicy", policy =>
|
||||||
|
{
|
||||||
|
policy.WithOrigins("http://localhost:3000")
|
||||||
|
.AllowAnyHeader()
|
||||||
|
.AllowAnyMethod()
|
||||||
|
.AllowCredentials();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// Add SignalR services
|
||||||
|
builder.Services.AddSignalR();
|
||||||
|
var app = builder.Build();
|
||||||
|
// Use CORS with the specified policy
|
||||||
|
app.UseCors("CorsPolicy");
|
||||||
|
// Use default files and static files
|
||||||
|
app.UseDefaultFiles();
|
||||||
|
app.UseStaticFiles();
|
||||||
|
// Map the MessagingHub to the "/hub" endpoint
|
||||||
|
app.MapHub<MessagingHub>("/hub");
|
||||||
|
// Run the application
|
||||||
|
app.Run();
|
|
@ -4,7 +4,7 @@
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<RootNamespace>real_time_app</RootNamespace>
|
<RootNamespace>SignalRApp</RootNamespace>
|
||||||
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "real-time-app", "real-time-app\real-time-app.csproj", "{1E00B034-8D96-4012-9DA0-A7CB3FAA6DA5}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SignalRApp", "SignalRApp\SignalRApp.csproj", "{1E00B034-8D96-4012-9DA0-A7CB3FAA6DA5}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A7453357-B0EC-464E-8CFA-3D2E34977FF6}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A7453357-B0EC-464E-8CFA-3D2E34977FF6}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
|
||||||
|
|
||||||
// Add services to the container.
|
|
||||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
|
||||||
builder.Services.AddEndpointsApiExplorer();
|
|
||||||
builder.Services.AddSwaggerGen();
|
|
||||||
|
|
||||||
var app = builder.Build();
|
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
|
||||||
if (app.Environment.IsDevelopment())
|
|
||||||
{
|
|
||||||
app.UseSwagger();
|
|
||||||
app.UseSwaggerUI();
|
|
||||||
}
|
|
||||||
|
|
||||||
app.UseHttpsRedirection();
|
|
||||||
|
|
||||||
var summaries = new[]
|
|
||||||
{
|
|
||||||
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
|
||||||
};
|
|
||||||
|
|
||||||
app.MapGet("/weatherforecast", () =>
|
|
||||||
{
|
|
||||||
var forecast = Enumerable.Range(1, 5).Select(index =>
|
|
||||||
new WeatherForecast
|
|
||||||
(
|
|
||||||
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
|
|
||||||
Random.Shared.Next(-20, 55),
|
|
||||||
summaries[Random.Shared.Next(summaries.Length)]
|
|
||||||
))
|
|
||||||
.ToArray();
|
|
||||||
return forecast;
|
|
||||||
})
|
|
||||||
.WithName("GetWeatherForecast")
|
|
||||||
.WithOpenApi();
|
|
||||||
|
|
||||||
app.Run();
|
|
||||||
|
|
||||||
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
|
|
||||||
{
|
|
||||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
|
||||||
}
|
|
Loading…
Reference in New Issue