我在桌面C#应用程序中有一个自托管的webApi项目。这使用Microsoft.Owin.Hosting.WebApp。
我有一个Hub派生类,它有一个来自角客户端的发送和接收。
集线器由WebApp.start实例化。我发现这是短暂的。当客户端发送消息时,集线器将被实例化然后处理。我需要向客户端发送消息,但是我没有集线器的实例来向另一个方向发送消息。
有一次,我持有对实例的引用(如内存泄漏),我可以向客户端发送消息。
客户端显示始终连接。没有断开连接的消息。
我错过了什么?
答案 0 :(得分:0)
你不应该自己持有这个实例而且你不应该自己创建一个实例。
在此处阅读有关中心点播生命时间的详细信息: https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-server#hub-object-lifetime
如果您需要向连接的客户端发送消息,则需要使用GetHubContext。
示例:的
var context = GlobalHost.ConnectionManager.GetHubContext<yourHub>();
context.Clients.All.Send("Something");
(如果您使用核心信号器读取:Call SignalR Core Hub method from Controller)