我们已经在dotnet核心和SignalR中创建了消息微服务,并且其中包含了集线器类。此微服务用于将消息发送到客户端,并且由于signalR在反向代理上不起作用,因此在Azure Service Fabric中的特定端口(7777)上进行了部署。
我们的React Client应用程序部署在反向代理上,这是url: https://isambard-dev.capitawfm.co.uk:19081/IsambardServiceFabric/IsambardReactUI/#/
因此,在这种情况下,当我通过SignalR从Messaging Microservice发送消息时,我的react客户端可以正确接收消息。
但是,当我们将客户网址从https://isambard-dev.capitawfm.co.uk:19081/IsambardServiceFabric/IsambardReactUI/#/更改为 https://isambard-dev.capitawfm.co.uk
我们没有收到消息。为此,我们将React客户端部署到服务结构上的特定端口(7778),然后将其绑定到前端默认端口(443)。
因此,简而言之,当我在反向代理(19081)上部署客户端应用程序时,会收到消息,但是当我在特定端口(7778)上部署它时,就不会收到消息。
这是StartUp.cs中的signalR代码设置
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddMvc();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
Tracking.SetConfiguration();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials());
app.UseSignalR(routes =>
{
routes.MapHub<NotificationHub.NotificationHub>("/notificationHub");
});
app.UseHttpsRedirection();
app.UseMvc();
Tracking.TrackEvent(Assembly.GetEntryAssembly().GetName().Name + ".Started");
}
这是用于消息传递微服务的端口配置的代码,与我们用来响应Client刚刚在Program.cs中更改的端口相同。
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
try
{
var config = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true)
.AddCommandLine(args)
.Build();
var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var isDevelopment = environment == EnvironmentName.Development;
if (!isDevelopment)
{
Certificate settings_certificate = new Certificate();
config.GetSection("Certificate").Bind(settings_certificate);
options.Listen(System.Net.IPAddress.Loopback, 5000);
options.ListenAnyIP(7777, listenOptions =>
{
listenOptions.UseHttps(FindClientCertificateByThumbprint(settings_certificate.Thumbprint));
});
}
}
catch
{
throw;
}
})
.UseStartup<Startup>();
我们希望我们的React客户端应该从7777上部署的消息传递微服务接收消息。