Per svariati motivi, quando viene stabilita una connessione SignalR, sto memorizzando tale ConnectionId nel mio datastore. Tuttavia, tali record di connessione possono essere resi orfani, ad esempio, se SignalR viene riavviato. (Ho anche osservato un comportamento che mi fa chiedere se OnDisconnected() viene chiamato correttamente, anche se sono meno sicuro di ciò.)Dato un ConnectionR di segnale, posso sapere se quella sessione è ancora connessa?
Ma per qualsiasi motivo, periodicamente finisco con i record nel mio database che sono orfano, e mi piacerebbe essere in grado di sfoltire quelli e rimuovere qualsiasi ConnectionID elencato che non sia effettivamente connesso più - presumibilmente facendo in modo che SignalR mi dica se questo ConnectionID è ancora associato a una sessione live.
Ho guardato attraverso la sorgente SignalR, e non mi sta saltando addosso il modo migliore per farlo. C'è un modo ragionevole per farlo?
Questo è fondamentalmente quello che sto facendo ora, ma non sembra funzionare correttamente. Forse il 98% delle volte lo fa, ma ogni tanto chiudo tutti i miei browser sulla mia macchina dev, e poi quando torno nella mia stanza, sarà convinto che c'è ancora qualcosa nella mia versione di '_connectedClients', anche se tutto dovrebbe essere stato cancellato. Però non ho una riproduzione, quindi non è di grande aiuto per voi ragazzi. Ti farò sapere se riesco a capire cosa lo scatena, o se (forse più probabilmente) è un bug dalla mia parte. –
@N. Taylor Mullen perché il tuo ultimo annullamento restituisce il valore bool ?? –
@aliyouhannaei nessun motivo, solo uno snippet di codice di errore. L'ho appena aggiornato. –