Używam SignalR w mojej aplikacji. Mam aplikację, która w bardzo dużym stopniu zależy od tego, czy OnDisconnected()
jest poprawnie wywoływana. I nazywa się prawidłowo w następujących okolicznościach:SignalR rozłącz nie jest wywoływany przy rozłączeniu/ponownym połączeniu z Internetem
public Task OnDisconnected()
{
try
{
DeleteUser(Context.ConnectionId);
return null;
}
catch (Exception ex)
{
return null;
}
}
- Użytkownik odświeża stronę
- użytkownik przechodzi do nowej strony
- użytkownik zamknie przeglądarkę
jednak nie jest wywoływana, jeśli połączenie sieciowe nagle spada. Na przykład, jeśli odłączę kabel sieciowy od komputera klienta, lub wyłączę sieć bezprzewodową klienta, lub odłączę router, OnDisconnected()
nigdy nie zostanie wywołany, nawet po kilku minutach oczekiwania.
Nie pracowałem z SignalR tak wiele, ale jestem pewien, że nie jest to jedna z jego funkcjonalności do sprawdzenia, jeśli użytkownik jest nadal podłączony do koncentratora. Możesz zaimplementować swój własny zegar, który wyloguje użytkownika po (x) minutach. – Timsen
Po prostu nad tym linkiem może ci pomóc: http://www.dotnetcurry.com/ShowArticle.aspx?ID=826 – Timsen