【问题标题】:ASP.NET Core SignalR redis backplainASP.NET Core SignalR redis 背板
【发布时间】:2019-11-28 14:19:25
【问题描述】:

多台服务器上的 signalR 集线器无法通信

我在这里工作作为一个例子: https://docs.microsoft.com/en-us/aspnet/core/signalr/scale?view=aspnetcore-2.2

在单个服务器上提供通信。 redis 连接 pub/sub 工作正常

我想在多台服务器上的同一项目中的集线器上进行通信

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
        var signalR = services.AddSignalR();
        signalR.AddStackExchangeRedis(options =>
        {
            options.Configuration.ChannelPrefix = "ChannelName";
            options.Configuration.EndPoints.Add("127.0.0.1", 6379);
            options.Configuration.ClientName = "ClientNameSignalR";
            options.Configuration.AllowAdmin = true;
        });
    }
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        app.UseStaticFiles();
        app.UseSignalR(config =>
        {
            config.MapHub<MessageHub>("/message");
        });
        app.UseMvc();
    }

【问题讨论】:

  • “signalR 集线器无法通信”到底是什么意思?从一台服务器发送的消息不会传递到另一台服务器的客户端?我将“在单个服务器上提供通信”解释为每个服务器的客户端都接收该服务器发送的消息。能否也提供消息发送代码?
  • 项目名称应相同。 redis 将项目名称添加到通道名称中。因为不同的项目名称在不同的频道,他们不能发消息。

标签: asp.net-core redis signalr asp.net-core-signalr signalr-backplane


【解决方案1】:

解决方案名称必须相同

【讨论】:

  • 解决方案名称是什么意思?我在一个解决方案下有两个项目 web 和 api,但是,我分别托管它们,并希望进行交流。
  • 它们在一种解决方案下正常工作。为了使多个解决方案协同工作,它们必须具有相同的名称
  • 那么,不同的项目就不能沟通了吗?我需要将 Blazor 服务器项目与 Blazor Wasm 项目进行通信,但它们正在生成不同的通道:(
猜你喜欢
  • 2021-07-13
  • 2020-04-30
  • 2021-04-29
  • 2022-07-29
  • 2017-01-12
  • 1970-01-01
  • 2018-07-22
  • 2015-12-14
  • 1970-01-01
相关资源
最近更新 更多