ci siamo imbattuti in questo link, che specifica il tempo diverso out proprietà: https://github.com/SignalR/SignalR/wiki/Configuring-SignalRSignalR Proprietà Timeout
E anche questo ottimo post (When does a reconnect in signalR occour?) su come disconnessioni e riconnessioni avvengono tra un client e un server SignalR SignalR.
Giusto per ribadire le situazioni diverse dalla post di cui sopra:
"una riconnessione hub si verifica quando un client non è in linea poi riacquista connettività poco dopo i valori di configurazione SignalR determinano in gran parte i timestamp dei seguenti esempi così. non prendere i tempi di parola per parola
Ecco alcuni esempi e dei loro risultati (formato dell'ora m: ss). coinvolgono comportamento ricollegando:
Situazione 1
00:00 - client si connette al server, OnConnected viene attivato
0:10 - client perde la connessione a causa di problemi ISP (e si rende conto che perde la connessione)
00:15 - Cliente riaquista connettività
00:16 - OnReconnected evento viene attivato
Situazione 2
0:00 - client si connette al server, OnConn ette è innescato
0:10 - client perde la connessione a causa di tirare il cavo ethernet (non si accorge che è scollegato)
00:15 - Cliente riaquista connettività
Due cose possono accadere qui
A: 0:16 - Non succede nulla e cliente prosegue con la sua connessione precedente
B: 0: ~ 45 - cliente realizza la sua scollegato *
B: 0:46 - Transizioni client nello stato di riconnessione
B: 0:47 - Il client si riconnette correttamente e viene attivato l'evento OnReconnected.
Situazione 3
0:00 - client si connette al server, OnConnected viene attivato
0:10 - client perde la connessione a causa di tirare il cavo ethernet (non se ne accorge è scollegato)
0: ~ 45 - Cliente realizza la sua *
0:46 sconnessi - transizioni client nello stato di ricollegare
1:15 - Il server determina che il client è stato rimosso per troppo tempo e quindi si dimentica di esso, accodando un comando di "disconnessione" affinché il client possa ricevere se si riconnette poco dopo. ***
1:15 - OnDisconnect è innescato 01:16 - Cliente riacquista connettività
1:17 - client fa un "soft" ricollegare (non si innesca OnReconnected)
1:18 - client recupera il comando "disconnect"
1:19 - client chiama "Stop" e fa una disconnessione morbido (non attiva OnDisconnected)
Situazione 4
012.0:00 - client si connette al server, OnConnected viene attivato
0:10 - client perde la connessione a causa di tirare il cavo ethernet (non se ne accorge è scollegato)
0: ~ 45 - Cliente è consapevole le sue scollegati *
0:46 - transizioni client nello stato riconnessione
1:15 - Server determina che il cliente è stato andato per troppo tempo e poi dimentica a questo proposito, in coda un comando "disconnect" per il cliente per ricevere se si ricollega lievi y dopo. ***
1:15 - OnDisconnect viene attivato 01:30 - client interrompe che tenta di riconnettere (cercato troppo lungo) **
1:30 - transizioni client in stato disconnesso
- A causa del controllo keep alive del client: utilizzato per determinare quando un client è offline a causa della mancanza di keep alive. Non utilizzato per il lungo trasporto polling
** A causa client timeout lato disconnessione: usato per determinare quando un cliente è stato ricollegando per troppo tempo di un periodo e le probabilità sono il server ha dimenticato il cliente durante il tempo
*** A causa del timeout di disconnessione del server: utilizzato per determinare quando un client deve essere dimenticato. È un intervallo di tempo che inizia ad accumularsi una volta che una connessione viene contrassegnata come morta sul server. Alla fine il server mette in coda un comando di disconnessione per l'argomento del client che dice al client (se si ricollega) che deve avviare una nuova connessione. Il comando sparirà dal server quando l'argomento viene ripulito."
Quello che stiamo trovando è che otteniamo si disconnette e riconnette molto spesso (1 e 2) tra un client .NET SignalR e un server ASP.NET MVC SignalR, e disconnette anche che non comportano . riconnessioni (3 e 4) sappiamo che il protocollo ServerSentEvents viene utilizzato
e 'difficile sapere quali sono le proprietà di timeout abbiamo bisogno di modificare (aumento o diminuzione) a:.
- Ridurre il numero di disconnette e ricollega
- Non finire affatto nelle situazioni 3 e 4.
Una cosa importante da notare qui è che il nostro .NET SignalR Client è in realtà un servizio di Windows che è collegato al server tutto il tempo.
Attualmente abbiamo appena tenuto le impostazioni predefinite, che sono:
- ConnectionTimeout = 110 secondi
- DisconnectTimeout = 30 secondi
- KeepAlive = 30 secondi
Inoltre, stiamo utilizzando SignalR 1.0.1.
Grazie.Questo ci dà qualcosa su cui lavorare. PS. vorrei votare ma non ho abbastanza punti Rep apparentemente :-(Segnalo come risposta non appena ho confermato che il client Keep Alive ci aiuta con le disconnessioni – smitra
Haha tutto bene solo felice che aiuti =) –
Ciao di nuovo, non sono riuscito a trovare il lato client .NET KeepAlive nel ramo dev. Non sembra essere una proprietà sulla classe Connection. Il più vicino che ho trovato era il KeepAliveData con una proprietà di timeout sull'interfaccia di IConnection. Presumo che questo è ciò a cui ci stiamo riferendo? – smitra