C# 如何将Redis发布/订阅消息转发到ASP.NET Core中的SignalR 2

C# 如何将Redis发布/订阅消息转发到ASP.NET Core中的SignalR 2,c#,asp.net-core,redis,signalr,asp.net-core-signalr,C#,Asp.net Core,Redis,Signalr,Asp.net Core Signalr,我有一个Redis服务器,服务将消息发布到某个通道。现在,我想在另一个应用程序中为.NET Core使用最新的SignalR 2位(编写时为1.0.0-alpha2-final),将发送到该特定通道的消息推送/转发到客户端(在我的例子中是浏览器) 我将以下NuGet软件包添加到我的ASP.NET核心项目中 <PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.0-alpha2-final" /> &

我有一个Redis服务器,服务将消息发布到某个通道。现在,我想在另一个应用程序中为.NET Core使用最新的SignalR 2位(编写时为1.0.0-alpha2-final),将发送到该特定通道的消息推送/转发到客户端(在我的例子中是浏览器)

我将以下NuGet软件包添加到我的ASP.NET核心项目中

<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.0.0-alpha2-final" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Redis" Version="1.0.0-alpha2-final" />

…和配置的信号机服务,如:

services.AddSignalRCore().AddRedis(options =>
{
    options.Factory = writer =>
    {
        string host = ...;
        int.TryParse(this.Configuration["<port>"], out int port);
        var configuration = new ConfigurationOptions
        {
            EndPoints = { {host, port} },
            Password = this.Configuration["<secret>"],
        };

        return ConnectionMultiplexer.Connect(configuration, writer);
    };
});
services.addSignalCore().AddRedis(选项=>
{
options.Factory=writer=>
{
字符串主机=。。。;
int.TryParse(此.Configuration[“”],输出int端口);
var配置=新配置选项
{
端点={{host,port}},
密码=此。配置[],
};
返回ConnectionMultiplexer.Connect(配置、编写器);
};
});
由于没有集线器(我实际上不知道是否需要集线器),我不知道JavaScript客户端如何订阅。除此之外,推送消息的不是应用程序本身,而是另一个通过
PUBLISH
向Redis发布消息的应用程序。相反,通过HTTP请求向应用程序发送消息不是一个选项,因为这样会减慢速度;这是一个(接近)实时场景


我想知道是否可以将Redis发布/订阅通信转发给Signal(开箱即用),或者是否需要使用StackExchange客户端并手动将其连接到集线器。

您必须从应用程序订阅Redis频道,并将所有消息转发给所有连接的Signal客户端。@Evk:如何?有这样的例子吗?@Div有两个独立的消息通道-Redis(服务器端)和SignlalR(客户端和服务器之间的总线)。然后,服务器上的某个应用程序想要向客户端发送消息。它不能直接这样做,所以它应该将消息发送到另一个服务器应用程序-asp.net服务。Asp.net服务接收此消息,然后通过SinglalR将其转发到相应的客户端。因此,您只需要找到一个如何发布和订阅Redis的示例,以及如何分别发布和订阅SignalR的示例,我认为在互联网上有很多这样的示例。@Evk,谢谢您的详细回答!例如,我进一步怀疑如何使用javascript订阅Redis频道,因为我们没有使用node js。无论如何,我会问一个新问题,并在这里发布一个链接,这样你就可以清楚地了解这个问题。