我已经使用新发布的ASP.NET Core 2.1成功设置了SignalR服务器和客户端 . 我 Build 了一个聊天室,让我的 ChatHub
扩展 Hub
:每当有来自客户端的消息时,服务器就会通过 Clients.Others
将其爆炸回来 .
我还不了解的是如何向客户端发送消息而不是作为对传入消息的响应 . 如果服务器正在工作并产生结果,如何获取对 Hub
的访问权以便向特定客户端发送消息? (或者我甚至需要访问 Hub
?还有其他方式发送消息吗?)
搜索此问题很困难,因为大多数结果来自旧版本的ASP.NET和SignalR .
3 回答
您可以将
IHubContext<T>
类注入服务并使用它调用客户端 .现在您可以将
NotifyService
注入您的类并向所有客户端发送消息:现在有SignalR HubContext的官方Microsoft文档可以回答你的问题https://docs.microsoft.com/en-us/aspnet/core/signalr/hubcontext?view=aspnetcore-2.1
但是,正如其他人所指出的那样,您需要通过依赖注入获取IHubContext的实例,以访问集线器之外的集线器方法 .
Simple inject the hubcontext into the class where you use the hubcontext.
您将在那里找到详细信息:
Call SignalR Core Hub method from Controller