Ich benutze SignalR (0.5.3) Hubs für eine Chat-App, wo jeder Tastendruck an den Server (in der DB gespeichert), an alle Clients und einen Rückgabewert (a String-Token der Art) wird vom Server zurückgesendet.SignalR Verbindung Handhabung auf App Pool Recycling
Es funktioniert gut, bis der App-Pool recycelt, dann stoppt die Weiterleitung der Tastenanschläge an alle Clients (weil der Speicherstatus verloren geht, nehme ich an) und der Server gibt auch keine Werte zurück. An dieser Stelle nehme ich an, dass alle Anfragen über SignalR von IIS in die Warteschlange gestellt und dann verarbeitet werden, sobald der App-Pool wiederverwendet wurde.
Meine Frage ist, wie kann ich mit diesem Szenario umgehen, so dass alle Clients die Serverunverfügbarkeit/Verzögerung aufgrund App-Pool-Recycling kennen, den Benutzer eine Weile warten und dann den Vorgang bei Wiederverbindung fortsetzen?
Auf Optionen 1: Sie haben Recht, der Client erfährt erst nach einer längeren Verzögerung (Timeout), dass die Verbindung über die Reconnection/Disconnected Events nicht funktioniert, aber ich werde es trotzdem versuchen. – Nick
@ Taylor Mullen - Hallo, bin ich richtig in der Annahme, dies bedeutet, dass ab 0.5.3 wenn signalr server weggeht, der Client stecken bleiben kann versuchen, die Verbindung bis zu einem Timeout wiederherzustellen, und es gibt keine Ereignisse auf der Clientseite, die sein können verwendet, um dies im Moment zu erkennen? Cheers Will – Will
@Will das ist teilweise richtig. In 0.5.3 erhalten Sie KEINE spezifischen Ereignisse wie "nowReconnecting", aber Sie können erkennen, dass SignalR versucht, sich über das stateChanged-Ereignis erneut zu verbinden. Wenn wir in den Wiederverbindungszustand gehen, wird das stateChanged-Ereignis ausgelöst und der neue Verbindungsstatus wird wieder hergestellt. Es gibt auch keine Zeitüberschreitung auf dem Client, es wird versuchen, für immer wieder zu verbinden. –