2016-05-15 10 views
1

Ich habe ein paar iPads, die eine Web-App ausführen. Die Web-App spricht über SignalR mit dem Server. Der Grund dafür ist, dass der Server bestimmte Daten an ein bestimmtes iPad senden muss. Daher muss es im Auge behalten, welches iPad ein-/ausgeschaltet ist.Wie behandelt man Unterbrechungsereignisse auf mobilen Geräten mit SignalR?

iPad verfügt über folgende Methoden, um die Anwendung in den Ruhezustand zu versetzen.

  1. iPad geht
  2. Benutzer in den Schlaf tötet Safari
  3. iPad läuft der Speicher

Wie erkenne ich diese auf dem Server? Ich weiß also, dass ich ihnen keine Daten schicken darf. Ich habe das Unterbrechungsereignis versucht, aber das braucht Zeit, um zu feuern (45 Sekunden standardmäßig oder so).

Antwort

1

Die kurze Antwort ist, dass Sie nicht sicher wissen werden, bis die Verbindung ausläuft, weil SignalR vorher nicht wissen wird.

Auch in dem Fall, der am meisten wie es in einer Art Signal kann Sie Trap - das iPad Übergang in den Standby-Modus - es gibt keine Benachrichtigung, dass Sie in Ihrem JavaScript-Code, mit denen Sie Ihre Verbindungen aufräumen können bevor das passiert.

Abhängig von der Art der Daten, die Sie an den Client senden, können Sie die Pufferung minimieren, indem Sie zu einem verfügbaren Datenbenachrichtigungsformat wechseln, in dem der Server ein minimales Datenpaket an den Client sendet warten, um abgerufen zu werden, dann müssen die Client-Seite die Informationen anfordern. In einigen Szenarien kann dies die Menge an Daten drastisch reduzieren, die entweder in Ihrer Anwendung oder in der Transportschicht gepuffert werden.

Natürlich, wenn Sie mehrere Kilobyte Daten pro Benachrichtigung haben und Sie alle für die sequenzielle Zustellung aufbewahren müssen, reduziert dies nur die Pufferung auf der Transportschicht, bewegt sie einen Schritt zurück und macht sie zur Verantwortung der Anwendung.

Eine weitere Option ist, dass die Clients einen Heartbeat senden, der von einer JS-Timer-Instanz ausgeführt wird. Jede Sekunde (abhängig davon, wie Sie in Echtzeit arbeiten) ruft der Client eine Methode auf dem Server auf, die Sie im Wesentlichen informiert, welche noch aktiv sind. Nach ein paar fehlgeschlagenen Check-ins - zum Beispiel 5 verpasste Herzschläge - können Sie davon ausgehen, dass der Client weg ist und keine Informationen mehr senden. Der Server muss den letzten Heartbeat für jede Clientverbindung verfolgen und jedes Mal, wenn Sie etwas an einen bestimmten Client senden möchten, überprüfen Sie, ob er kürzlich eingecheckt hat. Ist dies nicht der Fall, lassen Sie den Datenanbieter wissen, dass der Client offline ist, bis er erneut eincheckt. An diesem Punkt müssen Sie ihm wahrscheinlich mitteilen, dass er neu laden und neu beginnen soll.