Attualmente sto sviluppando un'applicazione utilizzando hub SignalR (2.1).Segnale: rilevamento della connessione attiva nei client C#
Ho 1 client WPF e l'altro è un client WCF. Tutto funziona bene nel senso che stanno trasmettendo perfettamente i messaggi.
L'unico problema che ho affrontato ora è che ho notato che OnDisconnected non è stato affatto attivato quando l'applicazione si spegne per motivi come il riavvio automatico, il server WCF andato giù e pochi altri. Il timeout è il valore predefinito di 30 secondi. Non viene mai chiamato neanche dopo che è trascorso un giorno (ho provato). Tuttavia, il timeout funziona per i client Web.
Funziona solo quando chiamo hub.connection.stop().
Il metodo Ondisconnected tuttavia funziona molto bene quando il client è un browser.
Quindi, vorrei chiedere se esiste un modo per il lato Signal R Hub di essere in grado di verificare se il client è ancora connesso o è già uscito (come un ping)?
1) si dovrebbe presentare un bug su github per il client .net signalr (o forse hanno anche un bug?). 2) puoi facilmente implementare il tuo meccanismo di ping, inviando meccanismi avanti e indietro tra client e hub –
Bene, ho letto e noto questo testo dicendo "Se i tuoi server web smettono di funzionare o l'applicazione si riavvia, il metodo OnDisconnected non viene chiamato Pertanto, è possibile che il repository di dati disponga di record per gli ID di connessione che non sono più validi. " in http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections. Quindi, so che loro lo sanno.Ma, la mia domanda è, c'è qualche modo integrato per il mozzo SignalR di notare se la connessione è stata rilasciata invece di eseguire il ping ogni due secondi. – Kiong