【发布时间】:2016-07-09 18:22:48
【问题描述】:
我有一个在服务器 A 上运行的 ASP.NET MVC 应用程序和一些在服务器 B 上运行的 Web 服务。我已经实现了在服务器 A 上使用 SignalR 的实时通知。但是现在我需要服务器 B还能够向从服务器 A(主 Web 应用程序)提供的视图发送消息。因此,我正在尝试使用教程here 来涉及 Redis 背板。
在服务器 A 的启动中,我添加了以下内容:
GlobalHost.DependencyResolver.UseRedis("localhost", 6379, string.Empty, "abc");
app.MapHubs();
在这里,我假设“myApp”表示频道,当我在 Redis 控制台上运行 publish abc "hello world" 时,我可以看到订阅者计数返回为 1,但我无法弄清楚 SignalR 集线器如何与这个频道。我在哪里可以在服务器/视图上收到消息?我们可以只订阅一个 redis 频道吗?我们不能动态配置订阅特定频道吗?
编辑:如果我订阅abc,我可以在 redis 控制台上看到使用 SignalR 实现的聊天应用程序发送的消息。
另外,现在我已经在服务器 A 上实现了我自己的 redis 监听器,它在从 redis 通道接收消息时调用 signalR 集线器函数。我确信一定有不同的方法可以做到这一点,我希望 redis 背板可以帮助我,但不确定它是如何工作的。
【问题讨论】:
-
一个简单的解决方案。在服务器 B 上的所需频道上发布消息。订阅服务器 A 上的频道并手动将消息推送到 signalR 集线器。
-
这听起来可能很愚蠢,但它可以帮助我清楚地理解。这是否意味着要查看的每条消息只能通过服务器 A 发送,而不能直接通过服务器 B 发送?那么signalR.redis在这里有什么用呢?
标签: c# asp.net-mvc asp.net-mvc-4 redis signalr