I would like to place a SWF in a web page on a server, and have
localConnection work with a SWF on the desktop (localhost).

The following 2 classes work fine when run locally, and fine when run both
online. Is there a trick I can use, or do I need to use XMLSocket somehow
for this?

*SENDER (to be in a webpage)*

package net.ericd.utils
{
    import flash.display.Sprite;
    import flash.net.LocalConnection;
    import flash.events.StatusEvent;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    /**
     * This SWF will reside in a web page.
     */
    public class LocalConnectionSender extends Sprite
    {
        private var conn:LocalConnection;
        private var myTimer:Timer;
        private var circle:Sprite;

        public function LocalConnectionSender()
        {
            conn = new LocalConnection();
            conn.allowDomain( "*", "localhost" );
            conn.addEventListener( StatusEvent.STATUS, onStatus );
            myTimer = new Timer( 500, 0 );
            myTimer.addEventListener( TimerEvent.TIMER, ping );

            circle = new Sprite();
            circle.graphics.beginFill( 0xFF6600, 1 );
            circle.graphics.drawCircle( 50, 50, 10 );
            circle.graphics.endFill();
            circle.alpha = 0;
            addChild( circle );

            myTimer.start();
        }

        private function onStatus( event:StatusEvent ):void
        {
            switch( event.level )
            {
                case "status":
                    circle.alpha = 1;
                    break;
                case "error":
                    circle.alpha = 0.3;
                    break;
            }
        }

        private function ping( event:TimerEvent ):void
        {
            conn.send( "lifeConnection", "lcHandler", "hello" );
        }
    }
}

*RECEIVER (to be local on desktop):*

package net.ericd.utils
{
    import flash.display.Sprite;
    import flash.net.LocalConnection;

    public class LocalConnectionReceiver extends Sprite
    {
        private var conn:LocalConnection;

        /**
         * This SWF will reside on the desktop, local.
         */
        public function LocalConnectionReceiver()
        {
            conn = new LocalConnection();
            conn.allowDomain( "*", "localhost" );

            conn.client = this;
            try
            {
                conn.connect( "lifeConnection" );
            } catch ( error:ArgumentError )
            {
                trace( "Can't connect, name already in use." );
            }
        }

        public function lcHandler( msg:String ):void
        {
            trace( "received data: " + msg );
        }
    }
}


Any ideas appreciated.
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to