.net 如何让信号员订阅Redis频道?

.net 如何让信号员订阅Redis频道?,.net,redis,signalr,.net,Redis,Signalr,我有一个Java服务器执行一些工作,并在Redis上发布结果。我想把这个结果实时发送给一些用户;所以我实现了一个基于signar的解决方案。结果必须适用于许多客户,而Signal只是其中之一;因此,服务器不能被修改为完全符合我的要求。基本上,我的情况如下: 服务器->Redis->信号器->浏览器 我认为这是一个丑陋的解决方案,因为它使用惰性类型来侦听订阅的通道,并调用一个委托来告诉Signaler推送数据。最好的解决方案是直接将数据从服务器推送到signar,但我不能改变服务器发布结果的方式。

我有一个Java服务器执行一些工作,并在Redis上发布结果。我想把这个结果实时发送给一些用户;所以我实现了一个基于signar的解决方案。结果必须适用于许多客户,而Signal只是其中之一;因此,服务器不能被修改为完全符合我的要求。基本上,我的情况如下:

服务器->Redis->信号器->浏览器

我认为这是一个丑陋的解决方案,因为它使用惰性类型来侦听订阅的通道,并调用一个委托来告诉Signaler推送数据。最好的解决方案是直接将数据从服务器推送到signar,但我不能改变服务器发布结果的方式。我想到了一个可执行文件作为Redis和Signal之间的桥梁,但它看起来更难看:(


还有其他方法可以让信号器收听Redis频道吗?

最简单的方法是使用Microsoft提供的
Microsoft.AspNet.signar.Redis

配置非常简单。您只需执行以下操作:

public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            GlobalHost.DependencyResolver.UseRedis("server", port, "password", "AppName");
            app.MapSignalR();
        }
    }

基本上,它所做的是在Redis实例上创建一个它将使用的发布/订阅通道。(如果Redis实例是集群的一部分,请小心!它将在所有实例之间跳转消息,导致客户端接收数万条消息!)

在引擎盖下,它将用一个消息总线的实现取代信号器的标准消息总线,该消息总线将把消息放入Redis管道中

希望这有帮助


祝你好运!

这是针对SignalR scaleout的,这不是我的实际问题;我所说的服务器是一个与其他客户端通信的Java服务器,而SignalR只是其中之一;因此无法修改服务器以完全适合SignalR。我将尝试更清楚地说明我的问题。我看不出您在这里如何配置频道面对同样的问题,有两个项目,web和api,想要使用Signal,但不确定如何从Redis读取消息。你解决了这个问题吗?我的问题是