SignalR集线器是短暂的

时间:2018-05-31 01:13:25

标签: signalr signalr-hub

我在桌面C#应用程序中有一个自托管的webApi项目。这使用Microsoft.Owin.Hosting.WebApp。

我有一个Hub派生类,它有一个来自角客户端的发送和接收。

集线器由WebApp.start实例化。我发现这是短暂的。当客户端发送消息时,集线器将被实例化然后处理。我需要向客户端发送消息,但是我没有集线器的实例来向另一个方向发送消息。

有一次,我持有对实例的引用(如内存泄漏),我可以向客户端发送消息。

客户端显示始终连接。没有断开连接的消息。

我错过了什么?

1 个答案:

答案 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