我正在ASP.Net Core应用程序中使用通过集线器帮助程序通过DI传递的集线器上下文,如本文“ How can I pass a SignalR hub context to a Hangfire job on ASP .NET Core 2.1?”中所述。基本上,我使用的是一个维护SignalR hubContext的帮助程序,以将消息从集线器外部从服务器发送到连接的客户端。
现在,我还试图通过覆盖SignalR集线器的onConnected
方法(如本文“ How to iterate over users in asp.net core SignalR?”中所述)来保留已连接客户端的列表,以便能够发送个人(即专用)消息。
问题是建议的解决方案从集线器内部开始工作,而当通过DI传递hubContext时,我只能从外部访问集线器。
例如,在我的中心帮助器中,我可以访问_hubContext.Clients
但不能访问_hubContext.Context
或诸如onConnected
之类的任何公共方法。
有什么建议吗?
答案 0 :(得分:0)
出于我的需要,我最终在集线器中将GetAllActiveConnections定义为静态,然后从集线器帮助程序中结合注入的hubcontext使用它。
我的中心包含一个静态字段:
public Task GetAllActiveConnections() { ... }
以及使用此字段的静态公共方法:
foreach (var activeConnection in MyHub.GetAllActiveConnections())
{
hubcontext.Clients.Client(activeConnection).SendAsync("hi conn : " + activeConnection);
}
然后我的中心助手使用中心的静态方法。
{{1}}