Ich entwickle gerade eine Anwendung mit SignalR (2.1) Hubs.SignalR: Erkennung einer aktiven Verbindung in C# -Clients
Ich habe 1 WPF-Client und der andere ist ein WCF-Client. Alles funktioniert gut, indem sie die Nachrichten perfekt weitergeben.
Das einzige Problem, das ich jetzt konfrontiert ist, dass ich bemerkte, dass die OnDisconnected überhaupt nicht ausgelöst wird, wenn die Anwendung aus Gründen wie automatische Neustarts, WCF-Server und einige andere heruntergefahren wird. Das Zeitlimit ist der Standardwert von 30 Sekunden. Es wird nie aufgerufen, auch nachdem 1 Tag vergangen ist (ich habe es versucht). Die Zeitüberschreitung funktioniert jedoch für Web Clients.
Es funktioniert nur, wenn ich hub.connection.stop() aufrufen.
Die Ondisconnected-Methode funktioniert jedoch sehr gut, wenn der Client ein Browser ist.
Daher möchte ich fragen, ob es eine Möglichkeit für Signal R Hub gibt, um zu überprüfen, ob der Client noch verbunden ist oder bereits ausgefallen ist (z. B. ein Ping)?
1) Sie sollten einen Fehler auf GitHub für den .Net-Signal-Client (oder vielleicht haben sie schon einen Fehler?). 2) Sie können einfach Ihren eigenen Ping-Mechanismus implementieren, indem Sie Mechanismen zwischen Clients und Hubs hin und her senden. –
Nun, ich lese diesen Text durch und merke ihn: "Wenn Ihre Webserver nicht mehr funktionieren oder die Anwendung neu gestartet wird, wird die OnDisconnected-Methode nicht aufgerufen Daher ist es möglich, dass Ihr Daten-Repository Datensätze für Verbindungs-IDs enthält, die nicht mehr gültig sind. " in http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections. Daher weiß ich, dass sie davon wissen.Aber meine Frage ist, gibt es irgendwelche eingebauten Weg für den SignalR-Hub zu bemerken, wenn die Verbindung fallen gelassen wurde, anstatt mich alle paar Sekunden zu pingen. – Kiong