Surveillance de la connectivité réseau



Adobe® AIR™ permet de vérifier les changements apportés à la connectivité réseau de l'ordinateur sur lequel est installée une application AIR. Ces informations sont utiles si une application utilise des données transmises via le réseau. Par ailleurs, une application peut vérifier la disponibilité d'un service réseau.

Détection des changements apportés à la connectivité réseau

Votre application AIR peut s'exécuter dans des environnements caractérisés par une connectivité réseau non déterminée et en évolution constante. Pour aider une application à gérer les connexions aux ressources en ligne, Adobe AIR envoie un événement de changement réseau à chaque fois qu'une connexion réseau est disponible ou non disponible. L'objet NativeApplication de l'application distribue l'événement de changement réseau. Pour répondre à cet événement, ajoutez un écouteur :

NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange); 

Définissez également une fonction de gestionnaire d'événement :

function onNetworkChange(event:Event) 
{ 
    //Check resource availability 
} 

L'événement Event.NETWORK_CHANGE n'indique pas un changement de la connectivité réseau globale. Il se contente de signaler qu'une connexion réseau a changé. AIR ne tente pas d'interpréter la signification du changement réseau. Un ordinateur connecté au réseau étant susceptible de disposer d'un nombre élevé de connexions réelles et virtuelles, perdre une connexion ne signifie pas nécessairement perdre une ressource. A l'inverse, une nouvelle connexion n'est pas non plus synonyme de disponibilité accrue des ressources. Il arrive qu'une nouvelle connexion bloque l'accès à des ressources précédemment disponibles (lors d'une connexion à un VPN, par exemple).

En règle générale, l'unique façon de déterminer si une application peut se connecter à une ressource distante consiste à en faire l'essai. A cet effet, les structures de surveillance des services du package air.net proposent aux applications AIR un moyen orienté événement de répondre aux changements de la connectivité réseau vers un hôte déterminé.

Remarque : la structure de surveillance des services détecte si un serveur répond de manière acceptable à une requête. Cette méthode ne garantit pas une connectivité totale. Les services Web évolutifs proposent souvent des dispositifs de mise en cache et d'équilibrage de charge destinés à réorienter le trafic vers un groupe de serveurs Web. Dans ce cas de figure, les prestataires de services n'assurent qu'un diagnostic partiel de la connectivité réseau.

Principes de base de la surveillance des services

La structure de surveillance des services, distincte de la structure AIR, réside dans le fichier servicemonitor.swc. Pour pouvoir utiliser la structure, le fichier servicemonitor.swc doit être inclus dans votre processus de compilation.

Important : pour utiliser ces classes dans Adobe® Flash® CS3 Professional, faites glisser le composant ServiceMonitorShim du panneau Composants vers la Bibliothèque, puis ajoutez l'instruction import suivante dans votre code ActionScript 3.0 :
import air.net.*;

Pour utiliser ces classes dans Adobe® Flash® CS4 Professional :

  1. Choisissez Fichier > Paramètres de publication.

  2. Cliquez sur le bouton Paramètres pour ActionScript 3.0. Sélectionnez Chemin de la bibliothèque.

  3. Cliquez sur le bouton Localiser le fichier SWC, puis localisez Adobe Flash CS4/AIK1.1/frameworks/libs/air/servicemoniter.swc.

  4. Cliquez sur le bouton OK.

  5. Ajoutez l'instruction d'importation suivante dans votre code ActionScript 3.0 :
    import air.net.*;

La classe ServiceMonitor met en œuvre la structure de surveillance des services réseau et propose des fonctionnalités de base aux utilitaires de surveillance des services. Par défaut, une occurrence de la classe ServiceMonitor distribue des événements relatifs à la connectivité réseau. L'objet ServiceMonitor distribue ces événements lors de la création de l'occurrence et lorsqu'un changement réseau est détecté par Adobe AIR. Par ailleurs, vous pouvez définir la propriété pollInterval d'une occurrence de ServiceMonitor de sorte à vérifier la connectivité à fréquence déterminée exprimée en millisecondes, sans tenir compte des événements de connectivité réseau généraux. Un objet ServiceMonitor ne vérifie pas la connectivité réseau tant que la méthode start() n'a pas été appelée.

La classe URLMonitor, une sous-classe de la classe ServiceMonitor, détecte les changements de connectivité HTTP associés à une requête URLRequest déterminée.

La classe SocketMonitor, également une sous-classe de la classe ServiceMonitor, détecte les changements de connectivité vers un hôte déterminé sur un port donné.

Détection de la connectivité HTTP

La classe URLMonitor détermine s'il est possible d'envoyer des requêtes HTTP à une adresse déterminée sur le port 80 (qui est généralement utilisé par les communications HTTP). Le code suivant utilise une occurrence de la classe URLMonitor pour détecter les changements de connectivité vers le site Web d'Adobe :

import air.net.URLMonitor; 
import flash.net.URLRequest; 
import flash.events.StatusEvent; 
var monitor:URLMonitor; 
monitor = new URLMonitor(new URLRequest('http://www.adobe.com')); 
monitor.addEventListener(StatusEvent.STATUS, announceStatus); 
monitor.start(); 
function announceStatus(e:StatusEvent):void { 
    trace("Status change. Current status: " + monitor.available); 
}

Détection de la connectivité des sockets

Les applications AIR peuvent également utiliser les connexions de socket pour assurer la connectivité de type « push ». Pour raisons de sécurité, les pare-feu et routeurs réseau interdisent généralement les communications réseau sur les ports non autorisés. Les développeurs doivent de ce fait tenir compte du fait que les utilisateurs risquent de ne pas pouvoir établir des connexions de socket.

Similaire à l'exemple URLMonitor, le code suivant utilise une occurrence de la classe SocketMonitor pour détecter les changements de connectivité associés à une connexion de socket sur le port 6667, fréquemment utilisé par IRC :

import air.net.ServiceMonitor; 
import flash.events.StatusEvent; 
 
socketMonitor = new SocketMonitor('www.adobe.com',6667); 
socketMonitor.addEventListener(StatusEvent.STATUS, socketStatusChange); 
socketMonitor.start(); 
 
function announceStatus(e:StatusEvent):void { 
    trace("Status change. Current status: " + socketMonitor.available); 
}