Home

Awesome

Air Http Daemon

Air Http is a flex library that enables developers to add an HTTP Deamon inside an AIR application. This simple AIR webserver makes it easy to extend access to functions and status within an application. This is especially useful if you've got to communicate from a webpage (over localhost) without the use of FLASH communication. At the time this was written, for example, Chrome's sandbox would prevent communication with other FLASH components that were in other processes.

The server, com.airhttp.HttpServer, is simple to incorporate and provides the ability to server files found under a specified directory within your applicationStorageDirectory, or extend with ActionControllers that implement actions in code you supply.

Version

This is version 0.1.0

Adding the HTTP Server to Your Application

Adding the Air Http server to your application is fairly simple (it must be an AIR application). All classes are found under com.airhttp. To instantiate an start your server, add the following code to one of your application classes that will manage the server.

    // import the package
    import com.airhttp.*;
    
    // declare your server
    private var weberv:HttpServer;
    
    // instantiate the server on port 4567
    webserv = (new HttpServer());
    var isListening:Boolean = webserv.listen(4567);

Extending your Application to HTTP with ActionControllers

com.airhttp.ActionController is the base class for controllers. Extending this class to do something, or respond with some data is very simple.

**Example - ** Display Application Status

In AppServiceController.as ...

    class AppServiceController extends com.airhttp.ActionController
    {
      private var _theApp:Object;
      
      public function AppServiceController(theApp:Object)
      {
        super('/app');
        _theApp = theApp;
      }
      
      /**
      * Respond with list of application stats, or a single
      * stat if it's name is passed in the URL with the 'name'
      * parameter.
      * 
      * ie. http://localhost:4567/app/status?name='uptime'
      */
      public function status(params:URLVariables):String
      {
          var items:String = "<ul>";
          var stats:Object = _theApp.statusValues;
          
          // Return one of the stats?
          if (params.hasOwnProperty('name')) {
            items += "<li>" + params.name + " : " + stats[params.name] + "</li></ul>";

            // Respond with success!
            return responseSuccess("<h1>Status</h1>" + items);
          }

          // Return all of the stats
          for (var itemName:String in stats) {
              items += "<li>" + itemName + " : " + stats[itemName] + "</li>";
          }
          items += "</ul>";
          
          // Respond with success!
          return responseSuccess("<h1>Status</h1>" + items);
      }
    }

Then in your webserver managing class ...

// myApp is a pointer to a class that has "statusValues"
webserv.registerCalback(new AppServiceController(myApp));

Then from a web browser

http://localhost:4567/app/status

Building

To build airhttp you need the flex sdk and ant. 1st edit FLEX_HOME in build/build.properties and then type the following commands from the top level directory.

> cd build
> ant

License

This project rocks and uses MIT-LICENSE. Copyright 2013 Leopold O'Donnell