我有一个 Web 应用程序,它使用 SignalR 和 Redis 横向扩展(据称)和集线器,效果很好。现在我需要一个工作角色才能向所有连接的客户端发送消息,但我不知道该怎么做。我还有一个控制台应用程序用作测试应用程序,它立即运行工作人员将定期运行的方法。
在工作程序或控制台应用程序中托管 Web 服务器似乎很奇怪,但这主要是我迄今为止发现的。与网络应用程序交谈似乎也很奇怪。不应该只是向 Redis 发布一条消息,然后所有订阅者都会收到它吗?
这是我正在使用的代码。我从网络应用程序中复制了UseRedis
电话和handleExecutedAction
几乎一字不差的内容。它不会抛出任何东西,但消息不会到达 Web 客户端:
GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutConfiguration("...", "..."));
var hubContext = GlobalHost.ConnectionManager.GetHubContext<WebUI.EventHub>();
hubContext.Clients.All.handleExecutedAction(new Action { Type = "testing" });
找到此页面后,我使用了此方法(上下文) 。我知道客户端正在工作,因为其他消息来自网络应用程序,而控制台应用程序没有任何消息......