Widziałem, jak można uwięzić zdarzenie rozłączenia po stronie klienta za pomocą SignalR przez powiązanie ze zdarzeniem .disconnect.SignalR: wykrywanie stanu połączenia na kliencie
Teraz, gdy już to zrobiłem, chcę wprowadzić klienta w cykl "czekam na ponowne połączenie", w którym ciągle próbuje się połączyć, dopóki nie odniesie sukcesu lub użytkownik anuluje. Czy hub ujawnia właściwość stanu połączenia? Myślę, że coś takiego kodu (pseudo)
var isConnected;
function onConnected() { isConnected = true; }
hub.disconnect = function() { while(hub.notconnected) { connect(); }
Nie sądzę, że jest to całkowicie prawdą. Jeśli utracę połączenie z moim serwerem, w końcu zrezygnuje z próby ponownego połączenia i zmusi mnie do ręcznego ponownego uruchomienia połączenia. Nie powiedziałbym, że zawsze próbuje się połączyć. – KingOfHypocrites
Należy zauważyć, że możliwe stany są wyliczane na '$ .signalR.connectionState', np.' $ .signalR.connectionState.connected'. Możesz zobaczyć bieżące użycie dla 'stateChanged' [tutaj] (https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client#connectionstatechanged-handlerchange-) –
Patrząc na klienta [kod] (https: //github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Client.JS/jquery.signalR.transports.longPolling.js), nie znalazłem żadnego odniesienia do warunku, który faktycznie przestałby być ponowne połączenie po pewnym czasie. Istnieją jednak obliczenia przesunięcia, które powodują dłuższe i dłuższe czasy pomiędzy nieudanymi próbami ponownego połączenia, aż do udanego połączenia. Sądzę więc, że spróbuje ponownie połączyć się "na zawsze", o ile strona JS będzie żyła w przeglądarce. – Mazrick