SignalR服務器應用程序可以對SignalR內部使用的保持活躍狀態做出反應嗎?對SignalR保持活動狀態的響應
我正在研究一個將執行信號客戶端的昂貴查詢的應用程序。查詢將不會在與服務器連接的計算機相同的機器上執行。這些查詢運行起來非常昂貴,並且易於重新啓動,因此執行此項工作的工作人員不希望爲斷開連接的客戶端或無法訪問或斷開的服務器工作。他們希望保證客戶仍然在那裏。這可以通過簡單地讓客戶端以某個時間間隔ping Web服務器來完成,Web服務器然後可以將ping傳遞給工作人員。
public class PingedHub : Hub
{
private readonly IPingListener _listener;
public Hub(IPingListener listener)
{
_listener = listener;
}
public Ping()
{
_listener.Ping(Context.ConnectionId);
}
}
SignalR already does this。爲了檢測丟失的連接,如果在一段時間內沒有其他流量傳輸,SignalR會發送Keep-Alive ping,由GlobalHost.Configuration.KeepAlive
配置。如果在較大的時間段內沒有收到任何流量(由GlobalHost.Configuration.ConnectionTimeout
配置),則會斷開客戶端連接並提升OnDisconnected
。
是否有可能掛鉤到現有系統以獲得客戶端連接的正確保證,或客戶端是否需要發送冗餘ping?