hackedteam/rcs-console-library

View on GitHub
src/it/ht/rcs/console/push/EMWebSocket.as

Summary

Maintainability
Test Coverage
package it.ht.rcs.console.push 
{
  import flash.events.Event;
  import flash.events.EventDispatcher;
  import flash.events.IOErrorEvent;
  import flash.events.SecurityErrorEvent;

  public class EMWebSocket extends EventDispatcher implements IWebSocketWrapper
  {
    protected var webSocket:WebSocket;
    protected var socketURL:String;
    
    public function EMWebSocket(url:String)
    {
      webSocket = new WebSocket(this, url, null, null, 0, null);
      webSocket.addEventListener("event", onData);
      webSocket.addEventListener(Event.CLOSE, onClose);
      webSocket.addEventListener(Event.CONNECT, onConnect);
      webSocket.addEventListener(IOErrorEvent.IO_ERROR, onIoError);
      webSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
    }
    
    public function getOrigin():String
    {
      return "http://localhost:8080";
    }
    
    public function getCallerHost():String
    {
      return null;
    }
    
    public function log(message:String):void
    {
      //trace("webSocketLog: " + message);
    }
    
    public function fatal(message:String):void
    {
      trace("webSocketFatal: " + message);
      var fe:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.IO_ERROR);
      dispatchEvent(fe);
    }
    
    public function error(message:String):void
    {
      trace("webSocketError: " + message);
      var fe:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.IO_ERROR);
      dispatchEvent(fe);
    }
    
    public function send(msg:Object, event:String = null,callback:Function = null):void{
      var messageId: String = "";
      
      webSocket.send(msg as String);
    }
    
    public function close():void
    {
      webSocket.close();
    }
    
    protected function onData(e:*):void{
      var event:Object = (e.target as WebSocket).receiveEvents();
      var data:Object = event[0];
      
      if ( data.type == "message" ){
        var msg:String = unescape(data.data);
        if (msg){
          var fem:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.MESSAGE);
          fem.data = msg;
          dispatchEvent(fem);
        }
      } else if (data.type == "open") {
        var feo:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.CONNECT);
        dispatchEvent(feo);
      } else if (data.type == "close"){
        var fec:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.CLOSE);
        dispatchEvent(fec);
      } else {
        log("We got a data message that is not 'message': " + data.type);
      }
    }
    
    protected function onClose(event:Event):void{
      var fe:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.CLOSE);
      dispatchEvent(fe);
    }
    protected function onConnect(event:Event):void{
      var fe:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.CONNECT);
      dispatchEvent(fe);
    }
    protected function onIoError(event:Event):void{
      var fe:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.IO_ERROR);
      dispatchEvent(fe);
    }
    protected function onSecurityError(event:Event):void{
      var fe:EMWebSocketEvent = new EMWebSocketEvent(EMWebSocketEvent.SECURITY_ERROR);
      dispatchEvent(fe);
    }
        
  }
}