src/it/ht/rcs/console/push/EMWebSocket.as
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);
}
}
}