Azure Service Fabric上的SIgnalR问题:React Client未收到消息

时间:2019-07-12 12:17:48

标签: reactjs azure azure-service-fabric asp.net-core-signalr

我们已经在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上部署的消息传递微服务接收消息。

0 个答案:

没有答案