Cómo hace tiempo que no escribo ningún tip, aquí va uno de AIR. Se trata de cómo detectar si disponemos de conexión de internet al ejecutar una aplicación AIR.
Esta comprobación es muy sencilla ya que disponemos de una clase de actionscript especifica para realizarla. La clase URLMonitor.
Al instanciar la clase URLMonitor de deberemos pasarle como parámetro un URLRequest con una dirección web válida con la que realizar la comprobación de la conexión a internet.
Código :
var _urlForRequest:URLRequest = new URLRequest("http://www.cristalab.com");
var _monitor:URLMonitor = new URLMonitor(_urlForRequest);
Una vez iniciado el URLMonitor, este lanzará un evento cada vez que detecte cambios de conexión.
Este evento se disparará siempre que haya un cambio en el estado de la conexión, con lo que podremos detectar si perdimos la conexión (o la recuperamos) durante la ejecución de nuestra aplicación, y evitar así posibles fallos de funcionamiento.
He visto aplicaciones en el mundo .NET que son conscientes del status de la conexión a Internet. Para no ir lejos, MSN Messenger se desconecta inmediatamente cuando deja de estar disponible la red. Ellos se enteran a través de un API de Windows que indica cuando estas cosas pasan a través de un evento.
Aquí, veo que usas una URL y una clase que "monitorea" el status de la URL. ¿Eso significa que está haciendo ping a esa URL cada X tiempo? ¿Cada cuanto tiempo? Si no hace ping cada X tiempo ¿Cómo dispara el evento? ¿Hay más datos de cómo se comporta? Es un tema que siempre me interesó. Por:Freddie
Z muy bueno! y así como las preguntas de Freddie, sumo la de si no hay algo más a nivel hard o soft(windows) para saber si se tiene conexión, quizás serviría también el hecho de que quizás no tenés conexión a internet pero estás dentro de una LAN.
Se entendió? es parecido a lo que pregunta F.
Saludos! Por:Raxiro-blog
Soy un bestia cuando dije soft"(windows)", si yo lo odio también grr!, Linux, Mac, etc! el que sea. Por:Raxiro-blog
Aquí, veo que usas una URL y una clase que "monitorea" el status de la URL. ¿Eso significa que está haciendo ping a esa URL cada X tiempo? ¿Cada cuanto tiempo? Si no hace ping cada X tiempo ¿Cómo dispara el evento? ¿Hay más datos de cómo se comporta? Es un tema que siempre me interesó.
El URLMonitor hace un ping a esa url unicamente después de haber llamado a start() y cuando cambia el estado de la red (accediendo a la información del sistema).
Pero tambien hay la posibilidad de ir lanzando pings continuamente de forma periódica con la propiedad pollInterval, indicándole el número de milisegundos en el que quieres repetir la comprobación. Esta propiedad por defecto es 0 con lo que no se envía ninguno.
Código :
_monitor.pollInterval = 5000;
Raxiro-blog :
quizás serviría también el hecho de que quizás no tenés conexión a internet pero estás dentro de una LAN.
Si estas en una red local puedes hacerlo igualmente con:
Código :
new URLRequest("http://localhost")
pero en este caso el URLMonitor no detecta los cambios de red, tendrías que ir haciendo pings continuamente con pollInterval para detectar cambios en el estado del servidor. Por:Zguillez
Zguillez :
Si estas en una red local puedes hacerlo igualmente con:
Código :
new URLRequest("http://localhost")
pero en este caso el URLMonitor no detecta los cambios de red, tendrías que ir haciendo pings continuamente con pollInterval para detectar cambios en el estado del servidor.
localhost siempre va a responder el ping, porque es el PC local. Me imagino que para una LAN hay que hacer ping a una IP conocida dentro de la red. Por:Freddie
hos a funcionado??? ami me da 4 errores. ya pa comenzar me dice que No se encontró la definición air.net.URLMonitor. lo importo asi: import air.net.URLMonitor; lo ago mal? y bueno los 3 mensages siguientes debe ser a consecuencia... buaaa y con la ayuda de adobe pasa lo mismo... el as3 es lokos. Dejo el codigo aqui por si alguien ve lo que ago mal. saludos
///////////////////////////
import flash.net.URLRequest;
import flash.events.StatusEvent;
var _urlForRequest:URLRequest=new URLRequest("http://www.cristalab.com");
var _monitor:URLMonitor=new URLMonitor(_urlForRequest);
_monitor.addEventListener(StatusEvent.STATUS, onStatusChange);
_monitor.start();
function onStatusChange(e:StatusEvent):void {
if (_monitor.available==true) {
//loquesea
} else {
//loquesea
}
}