为 UserHost/CustomerHost/ChessGameHost/FishRoomHost 补回 swagger;修正服务器替换脚本的网关健康检查

This commit is contained in:
2026-10-18 17:40:39 +08:00
parent d083d8524b
commit d7a672cdf4
9 changed files with 119 additions and 6 deletions
+2 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
@@ -16,6 +16,7 @@
<PackageReference Include="DotNetCore.CAP.PostgreSql" Version="8.3.4" />
<PackageReference Include="DotNetCore.CAP.RabbitMQ" Version="8.3.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="8.0.17" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
</ItemGroup>
<ItemGroup>
+26
View File
@@ -85,6 +85,23 @@ builder.Services.AddSingleton<IRequestApi, RequestApi>();
builder.Services.AddAutoMapper(typeof(AutoMapperConfig));
builder.Services.AddHostedService<ChessTimeoutService>();
#region Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
{
Title = "ChessGameHost",
Description = "象棋Socket接口",
Version = "v1"
});
foreach (var xml in System.IO.Directory.GetFiles(AppContext.BaseDirectory, "*.xml"))
{
try { c.IncludeXmlComments(xml, true); } catch { }
}
});
#endregion
builder.Services.AddHostedService<ChessBotService>();
builder.Services.AddHealthChecks()
@@ -190,6 +207,15 @@ if (app.Environment.IsDevelopment())
{
}
#region Swagger
app.UseSwagger(c => c.RouteTemplate = "swagger/{documentName}/swagger.json");
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "swagger";
c.SwaggerEndpoint("v1/swagger.json", "ChessGameHost v1");
});
#endregion
app.UseApiLogging();
app.UseRouting();
app.UseGlobalExceptionHandler();
+2 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
@@ -17,6 +17,7 @@
<PackageReference Include="DotNetCore.CAP.Dashboard" Version="8.3.4" />
<PackageReference Include="DotNetCore.CAP.PostgreSql" Version="8.3.4" />
<PackageReference Include="DotNetCore.CAP.RabbitMQ" Version="8.3.4" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
</ItemGroup>
<ItemGroup>
+26
View File
@@ -105,6 +105,23 @@ builder.Services.AddCap(builder.Configuration);
// ============================================
// ============================================
#region Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
{
Title = "CustomerApi",
Description = "客服服务 API 文档",
Version = "v1"
});
foreach (var xml in System.IO.Directory.GetFiles(AppContext.BaseDirectory, "*.xml"))
{
try { c.IncludeXmlComments(xml, true); } catch { }
}
});
#endregion
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
{
@@ -122,6 +139,15 @@ if (app.Environment.IsDevelopment())
app.UseDeveloperExceptionPage();
}
#region Swagger
app.UseSwagger(c => c.RouteTemplate = "customerswagger/{documentName}/swagger.json");
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "customerswagger";
c.SwaggerEndpoint("v1/swagger.json", "CustomerApi v1");
});
#endregion
app.UseCors("Cors");
var uploadPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads");
+2 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
@@ -18,6 +18,7 @@
<PackageReference Include="DotNetCore.CAP.PostgreSql" Version="8.3.4" />
<PackageReference Include="DotNetCore.CAP.RabbitMQ" Version="8.3.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="8.0.17" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
</ItemGroup>
<ItemGroup>
+26
View File
@@ -83,6 +83,23 @@ builder.Services.AddSignalR(hubOptions =>
})
.AddJsonProtocol();
#region Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
{
Title = "FishRoomHost",
Description = "捕鱼房间接口",
Version = "v1"
});
foreach (var xml in System.IO.Directory.GetFiles(AppContext.BaseDirectory, "*.xml"))
{
try { c.IncludeXmlComments(xml, true); } catch { }
}
});
#endregion
builder.Services.Configure<FormOptions>(x =>
{
x.MultipartBodyLengthLimit = 1024 * 1024 * 16;
@@ -154,6 +171,15 @@ if (app.Environment.IsDevelopment())
{
}
#region Swagger
app.UseSwagger(c => c.RouteTemplate = "swagger/{documentName}/swagger.json");
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "swagger";
c.SwaggerEndpoint("v1/swagger.json", "FishRoomHost v1");
});
#endregion
app.UseApiLogging();
app.UseRouting();
app.UseGlobalExceptionHandler();
+26
View File
@@ -113,6 +113,23 @@ builder.Services.AddCronJob<RankingRewardJob>(c =>
});
// Autofac
#region Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
{
Title = "UserApi",
Description = "游戏大厅接口管理",
Version = "v1"
});
foreach (var xml in System.IO.Directory.GetFiles(AppContext.BaseDirectory, "*.xml"))
{
try { c.IncludeXmlComments(xml, true); } catch { }
}
});
#endregion
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
{
@@ -128,6 +145,15 @@ if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
#region Swagger
app.UseSwagger(c => c.RouteTemplate = "swagger/{documentName}/swagger.json");
app.UseSwaggerUI(c =>
{
c.RoutePrefix = "swagger";
c.SwaggerEndpoint("v1/swagger.json", "UserApi v1");
});
#endregion
app.UseCors("Cors");
app.UseRouting();
app.MapHub<LoginHub>("/loginhub", options =>
+2 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
@@ -17,6 +17,7 @@
<PackageReference Include="DotNetCore.CAP.Dashboard" Version="8.3.4" />
<PackageReference Include="DotNetCore.CAP.PostgreSql" Version="8.3.4" />
<PackageReference Include="DotNetCore.CAP.RabbitMQ" Version="8.3.4" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.6.2" />
</ItemGroup>
<ItemGroup>
+7 -2
View File
@@ -86,10 +86,15 @@ run_container() {
}
health() {
local hp; hp=$(host_port "$1")
local svc=$1 hp; hp=$(host_port "$svc")
for _ in $(seq 1 15); do
local c; c=$(curl -s -o /dev/null -w '%{http_code}' "http://127.0.0.1:$hp/health")
[ "$c" = "200" ] && return 0
if [ "$svc" = "gateway" ]; then
# 网关的 /health 被 Ocelot 接管,会返回 404;只要端口有 HTTP 响应即视为存活
[ "$c" != "000" ] && return 0
else
[ "$c" = "200" ] && return 0
fi
sleep 2
done
return 1