此问题与使用SignalR和Azure Service Bus的Scaleout无关 . 我想在我的SignalR Web套接字应用程序中构建一个Service Bus侦听器(例如OnMessage),然后将消息相应地分发给连接的用户 . 消息将从各种单独运行的服务发布到集中式服务总线,连接到Web套接字服务器的UI /浏览器应接收这些消息 .
Option 1 :我可以将一个异步任务添加到集线器方法中,以订阅服务总线并由连接的用户进行过滤 . 这个问题是它使用来自线程池的额外线程,并且将为用户启动的 every 套接字连接执行此操作 . 我们的应用程序可以轻松启动每个选项卡打开5-10个或更多套接字 .
Option 2 :我可以向SignalR Startup.Configuration方法添加一个任务,然后接收所有消息并将它们分发给正确的连接用户 . 问题我可以访问用于发送到浏览器的Clients对象 .
我觉得SignalR和Service Bus是一个很好的补充,可以实现近乎实时的通信,但我发现很少实现这样的场景 . 我觉得这应该是一个很常见的场景 . 也许我错过了一些明显的设计模式,这将是一个更好的解决方案 .
1 回答
我能够弄清楚这一点 . 在SignalR Startup.Configuration方法中,我添加了一个启动监听器的方法,在该方法中我调用了 GlobalHost.ConnectionManager.GetHubContext . 目前,这并没有添加某种连接管理器来处理它 .