Utilizzo hub SignalR (0.5.3) per un'app di chat in cui ogni sequenza di tasti viene inviata al server (salvata nel DB), inoltrata a tutti i client e un valore restituito (a token di stringa di ordinamento) viene rinviato dal server.Gestione connessione SignalR su riciclo pool di app
Funziona correttamente, finché il pool di app non si ricicla, quindi smette di inoltrare le sequenze di tasti a tutti i client (perché lo stato del server in memoria è perso suppongo) e il server non restituisce alcun valore. A questo punto, suppongo che tutte le richieste via SignalR siano accodate da IIS e quindi elaborate una volta che il pool di app è stato riciclato.
La mia domanda è: come posso gestire questo scenario in modo che tutti i client siano a conoscenza della indisponibilità/ritardo del server a causa del riciclo del pool di applicazioni, avvisare l'utente di attendere un po 'e quindi riprendere a riconnettersi?
Sulle opzioni 1: hai ragione, il client viene a conoscenza della disconnessione solo dopo un ritardo prolungato (timeout), quindi la gestione tramite gli eventi di riconnessione/disconnessi potrebbe non funzionare ma farò comunque un tentativo. – Nick
@Taylor Mullen - Ciao, ho ragione a pensare che questo significa che a partire da 0.5.3 se il server signalr si allontana, il client può rimanere bloccato cercando di riconnettersi fino a un timeout, e non ci sono eventi sul lato client che possono essere usato per rilevare questo al momento? Cheers Will – Will
@Sarà parzialmente corretto. In 0.5.3 NON riceverai alcun evento specifico come "nowReconnecting" ma puoi rilevare che SignalR sta tentando di riconnettersi tramite l'evento stateChanged. Quando entriamo nello stato di riconnessione, l'evento stateChanged si attiva e il nuovo stato della connessione si riconnetterà. Inoltre, non c'è timeout sul client, proverà a riconnettersi per sempre. –