【发布时间】: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