"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
HTML-Beispiel für Erkennung der
Netzwerkverbindung Listing 17.1 Beispiel: Feststellen des Statuswechsels einer Netzwerkverbindung
Probieren Sie die Funktion des Beispiels einmal aus, indem Sie den Netzwerkstecker ziehen oder die Drahtlosverbindung deaktivieren.
17.1.2 HTTP-/HTTPS-Dienste überwachen
Das AIR SDK enthält die Datei servicemonitor.swc, die innerhalb des Pakets air.net die Klasse URLMonitor bereitstellt. Diese ist eine Unterklasse der Basisklasse ServiceMonitor . Sie übergeben dem Konstruktor die URL der HTTP- oder HTTPS-Ressource, die auf ihre Verfügbarkeit geprüft werden soll, und starten den Monitor. Die Instanzeigenschaft available verrät, ob der HTTP(S)-Dienst erreichbar ist oder nicht. Zusätzlich können Sie mit der Instanzeigenschaft pollInterval das Intervall in Millisekunden festlegen, in dem Ihre Anwendung die Verbindung zum Dienst überprüft. Wählen Sie diese Einstellung mit Bedacht, insbesondere wenn Sie damit rechnen, dass viele Benutzer gleichzeitig Ihre Anwendung verwenden werden – es hat schon Fälle gegeben, in denen ein zu kurz gewähltes Polling-Intervall einen Webserver zum Erliegen gebracht hat.
HTTP-Statuscodes
Die URLMonitor -Instanz führt »echte« Abrufe des Headers der angegebenen Ressource durch. Standardmäßig werden dabei die HTTP-Statuscodes OK ( 200 ), Accepted ( 202 ), No Content ( 204 ), Reset Content ( 205v und Partial Content ( 206 ) als erfolgreich angesehen. Das bedeutet, dass die URLMonitor-Instanz standardmäßig eine vorhandene Internetverbindung nicht erkennt, wenn Sie eine Ressource abrufen wollen, die nicht auf dem Server vorhanden ist.
Wenn Sie die URLMonitor-Instanz lediglich dazu verwenden wollen, Ihre Internetverbindung zu überprüfen, sollten Sie also die wahrscheinlichsten Fehlercodes des Servers, wie z.B. Forbidden ( 403 ), Not Found ( 404 ) oder Internal Server Error ( 500 ), zum Array der gültigen Statuscodes der URLMonitor -Instanz hinzufügen, da für den Test der Internetverbindung jede Antwort des Servers ausreicht (siehe nachfolgendes Beispiel).
Lösungsweg
1. Instantiieren einer URLMonitor -Instanz mit der gewünschten Test-URL als Konstruktorparameter
2. Registrieren eines Ereignis-Listeners StatusEvent.STATUS für die URLMonitor - Instanz
3. Aufruf der Methode start() der URLMonitor -Instanz
4. Abruf der Eigenschaft available der URLMonitor -Instanz
5. Weiterer Quelltext zur Abarbeitung und Reaktion
So geht es
Das folgende Flex-Beispiel färbt den Hintergrund des Anwendungsfensters grün, sobald eine Verbindung zum Internet hergestellt ist, bzw. rot, wenn die Verbindung unterbrochen ist. Außerdem erkennt die Anwendung die HTTP-Statuscodes 401, 403, 404 und 500 als gültig an (siehe Kasten »HTTP-Statuscodes«):
import air.net.URLMonitor;
private var myMonitor:URLMonitor = new URLMonitor(new URLRequest("http://skiller.eu"));
private function init():void {
myMonitor.addEventListener(StatusEvent.STATUS, handleStatus);
myMonitor.acceptableStatusCodes = myMonitor. acceptableStatusCodes.concat([401,403,404,500]);
myMonitor.start();
}
private function handleStatus(e:StatusEvent):void { var bgColor:uint = myMonitor.available ? 0x009900 /* grün */ : 0x990000 /* rot */;
this.setStyle("backgroundColor", bgColor); }
]]>
Listing 17.2 Beispiel: Überprüfung von HTTP-Dienst
Ziehen Sie auch hier einmal den Netzwerkstecker, um das Beispiel zu testen.
17.1.3 Verfügbarkeit von Sockets prüfen
Wenn Sie von Ihrer AIR-Anwendung aus über einen anderen Port als 80 (HTTP) oder 443 (HTTPS) per TCP mit der »Außenwelt« kommunizieren, können Sie auch die Klasse SocketMonitor verwenden, die ebenso wie URLMonitor von der Basisklasse ServiceMonitor