package { import flash.errors.*; import flash.events.*; import flash.net.Socket; import mx.controls.*; public class actionscript_socket_CustomSocket extends Socket { private var response:String; private var status:TextArea private function trace(x:String):void { status.text += x + "\n"; } public function actionscript_socket_CustomSocket(console:Object, host:String = null, port:uint = 0) { super(host, port); status = TextArea(console); trace("initialized"); configureListeners(); } private function configureListeners():void { trace("configure"); addEventListener(Event.CLOSE, closeHandler); addEventListener(Event.CONNECT, connectHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler); } private function writeln(str:String):void { str += "\n"; try { writeUTFBytes(str); } catch(e:IOError) { trace(String(e)); } } public function sendRequest():void { trace("sendRequest"); response = ""; writeln("GET /"); //writeln("there is a lot of research to do"); flush(); } private function readResponse():void { var str:String = readUTFBytes(bytesAvailable); response += str; trace(response.toString()); } private function closeHandler(event:Event):void { trace("closeHandler: " + event); trace(response.toString()); } private function connectHandler(event:Event):void { trace("connectHandler: " + event); sendRequest(); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function socketDataHandler(event:ProgressEvent):void { trace("socketDataHandler: " + event); readResponse(); } } }