Search code examples
actionscript-3flashadobe

I need to ping a website with ActionScript or Animate


I had found this code ( I need to ping to an network with flash or actionscript ) Im not sure i understand it or how to use it exactly - I need for this to redirect to another frame if it worked and another if it failed

Is anyone able to help?

    var ldr:URLLoader = new URLLoader();
ldr.addEventListener(HTTPStatusEvent.HTTP_STATUS, ldrStatus);

var url:String = "URL-TO-SITE";
var limit:int = 10;

var time_start:Number;
var time_stop:Number;
var times:int;

ping();

function ping():void
{
    trace("pinging", url);

    times = 0;
    doThePing();
}

function doThePing():void
{
    time_start = getTimer();
    ldr.load(new URLRequest(url));
}

function ldrStatus(evt:*):void
{
    if(evt.status == 200)
    {
        time_stop = getTimer();
        trace("got response in", time_stop - time_start, "ms");
    }

    times++;
    if(times < limit) doThePing();
}

Solution

  • Well it is trying to load a website 10 times and check the response. I would get rid of the limit though, it make no sense to try it 10 times in a row.

    Don't forget that you will need a crossdomain.xml file on your server to be able to access it from flash.

    You will need to add some more things for your purpose:

    // add an event listener for a failed call
    ldr.addEventListener(IOErrorEvent.IO_ERROR, ldrFailed);
    ldr.addEventListener(SecurityErrorEvent.SECURITY_ERROR , ldrSecurityError);
    
    function ldrFailed(evt:*):void
    {   
        // loader failed (no internet connection), try to ping again
        doFailedRedirect();
    }
    
    function ldrSecurityError(evt:*):void
    {   
        // There is an internet connection but probably something is wrong with your crossdomain.xml
        doFailedRedirect();
    }
    
    function doRedirect():void
    {   
        // make your redirect here
    }
    
    function doFailedRedirect():void
    {   
        // something went wrong, do your failed redirect here
    }
    

    Adjust the ldrStatus function:

    function ldrStatus(evt:*):void
    {
        if(evt.status == 200)
        {
            // server responded with status 200 wich means everything is fine 
            time_stop = getTimer();
            trace("got response in", time_stop - time_start, "ms");
            doRedirect();
        }
        else
        {
            // there is an internet connection but the server returns something else (probably something is wrong with the server)
            doFailedRedirect();
        }
    }