/*ADOBE SYSTEMS INCORPORATED
|
Copyright 2007 Adobe Systems Incorporated
|
All Rights Reserved.
|
|
NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the
|
terms of the Adobe license agreement accompanying it. If you have received this file from a
|
source other than Adobe, then your use, modification, or distribution of it requires the prior
|
written permission of Adobe.*/
|
ColdFusion.WebSocket={NS:"coldfusion.websocket.channels",WELCOME:"welcome",AUTHENTICATE:"authenticate",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",PUBLISH:"publish",INVOKE_AND_PUBLISH:"invokeAndPublish",GET_CHANNELS:"getChannels",GET_SUBSCRIBER_COUNT:"getSubscriberCount",GET_SUBSCRIPTIONS:"getSubscriptions",SEND_MESSAGE:"sendMessage",INVOKE_AND_MESSAGE:"invokeAndSend",INVOKE:"invoke",STOP:"stop",init:function(id,_393,_394,_395,_396,_397,_398,_399,_39a){
|
if(cf_ws.isWebSocketSupported()){
|
lWSC=new cf_ws.CFWebSocketWrapper();
|
ColdFusion.WebSocket[id]=lWSC;
|
lWSC.options={OnWelcome:this.cfonOpencallBk,OnMessage:this.cfMessageHandlerCallBk,OnClose:_398,onError:_399,appName:_393,cfauth:_394,subscribeTo:_395,referrer:_39a};
|
var _39b=self.location.hostname;
|
if(_39b&&_39b=="localhost"){
|
_39b="127.0.0.1";
|
}
|
var lURL="ws://"+(_39b)+":"+_cf_websocket_port+"/cfusion"+"/cfusion";
|
var lRes=lWSC.open(lURL,lWSC.options);
|
lWSC.isOpen=true;
|
lWSC.processConnected=function(_39e){
|
};
|
lWSC.processDisconnected=function(_39f){
|
};
|
lWSC.defaultMessageHandler=_396;
|
if(_397){
|
lWSC.appOnOpenHandler=_397;
|
}
|
lWSC.channelSpecificResHandlers={};
|
lWSC.subscribercount_callbackHandlers={};
|
return lWSC;
|
}else{
|
var _3a0={ns:ColdFusion.WebSocket.NS,reqType:ColdFusion.WebSocket.WELCOME,code:-1,msg:"Browser neither have native WebSocket support nor a flash player for the fallback."};
|
var _3a1=_399!=null?_399:_396;
|
_3a1(_3a0);
|
}
|
},welcome:function(_3a2,_3a3,_3a4){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
this.sendToken({ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.WELCOME,authKey:_3a2,subscribeTo:_3a3,appName:_3a4});
|
}
|
return lRes;
|
},authenticate:function(_3a6,_3a7){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
this.sendToken({ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.AUTHENTICATE,username:_3a6,password:_3a7,appName:this.options.appName});
|
}
|
return lRes;
|
},subscribe:function(_3a9,_3aa,_3ab){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3ad={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.SUBSCRIBE,channel:_3a9,appName:this.options.appName};
|
if(_3aa!=null&&(typeof _3aa=="object")){
|
_3ad.customOptions=_3aa;
|
}
|
this.sendToken(_3ad);
|
if(_3ab){
|
this.channelSpecificResHandlers[_3a9]=_3ab;
|
this.channelName_subscriptionInProcess=_3a9;
|
}
|
}
|
return lRes;
|
},unsubscribe:function(_3ae){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3b0={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.UNSUBSCRIBE,channel:_3ae,appName:this.options.appName};
|
this.sendToken(_3b0);
|
delete this.channelSpecificResHandlers[_3ae];
|
}
|
return lRes;
|
},publish:function(_3b1,_3b2,_3b3){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3b5={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.PUBLISH,channel:_3b1,data:_3b2,appName:this.options.appName};
|
if(_3b3!=null&&(typeof _3b3=="object")){
|
_3b5.customOptions=_3b3;
|
}
|
this.sendToken(_3b5);
|
}
|
return lRes;
|
},invokeAndPublish:function(_3b6,_3b7,_3b8,_3b9,_3ba){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3bc={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.INVOKE_AND_PUBLISH,channel:_3b6,cfcName:_3b7,cfcMethod:_3b8,methodArguments:_3b9,appName:this.options.appName,referrer:this.options.referrer};
|
if(_3ba!=null&&(typeof _3ba=="object")){
|
_3bc.customOptions=_3ba;
|
}
|
this.sendToken(_3bc);
|
}
|
return lRes;
|
},getSubscriberCount:function(_3bd,_3be){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3c0={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.GET_SUBSCRIBER_COUNT,channel:_3bd,appName:this.options.appName};
|
this.sendToken(_3c0);
|
}
|
if(_3be){
|
if(!this.subscribercount_callbackHandlers){
|
this.subscribercount_callbackHandlers={};
|
}
|
this.subscribercount_callbackHandlers[_3bd]=_3be;
|
}
|
return lRes;
|
},getSubscriptions:function(_3c1){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3c3={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.GET_SUBSCRIPTIONS,appName:this.options.appName};
|
this.sendToken(_3c3);
|
}
|
if(_3c1){
|
this.subscriptions_callbackHandler=_3c1;
|
}
|
return lRes;
|
},sendMessage:function(_3c4,_3c5,_3c6){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3c8={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.SEND_MESSAGE,targetId:_3c4,data:_3c5,appName:this.options.appName};
|
if(_3c6!=null&&(typeof _3c6=="object")){
|
_3c8.customOptions=_3c6;
|
}
|
this.sendToken(_3c8);
|
}
|
return lRes;
|
},invokeAndSend:function(_3c9,_3ca,_3cb,_3cc,_3cd){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3cf={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.INVOKE_AND_MESSAGE,target:_3c9,cfcName:_3ca,cfcMethod:_3cb,methodArguments:_3cc,appName:this.options.appName};
|
if(_3cd!=null&&(typeof _3cd=="object")){
|
_3cf.customOptions=_3cd;
|
}
|
this.sendToken(_3cf);
|
}
|
return lRes;
|
},invoke:function(_3d0,_3d1,_3d2,_3d3){
|
var lRes=this.isConnected();
|
if(lRes==true){
|
var _3d5={ns:ColdFusion.WebSocket.NS,type:ColdFusion.WebSocket.INVOKE,cfcName:_3d0,cfcMethod:_3d1,methodArguments:_3d2,appName:this.options.appName,referrer:this.options.referrer};
|
if(_3d3!=null&&(typeof _3d3=="object")){
|
_3d5.customOptions=_3d3;
|
}
|
this.sendToken(_3d5);
|
}
|
return lRes;
|
},openConnection:function(){
|
var lURL=cf_ws.URL_SERVER;
|
this.open(lURL,this.options);
|
},isConnectionOpen:function(){
|
var _3d7=this.isConnected();
|
return _3d7;
|
},closeConnection:function(){
|
this.close({fireClose:true});
|
},cfonOpencallBk:function(_3d8){
|
if(this.cfauth!=null||this.susbcribeTo!=null){
|
_3d8.welcome(this.cfauth,this.subscribeTo,this.appName);
|
}
|
if(_3d8.appOnOpenHandler){
|
_3d8.appOnOpenHandler.call(_3d8);
|
}
|
},cfMessageHandlerCallBk:function(_3d9,_3da){
|
var _3db=_3da.defaultMessageHandler;
|
if((_3d9.type=="event")&&(_3d9.name=="connect"||_3d9.name=="disconnect")){
|
return;
|
}
|
if((_3d9.reqType=="subscribe")&&_3da.channelName_subscriptionInProcess!=null){
|
if(_3d9.code==-1){
|
delete _3da.channelSpecificResHandlers[_3da.channelName_subscriptionInProcess];
|
}
|
delete _3da.channelName_subscriptionInProcess;
|
}
|
if((_3d9.reqType=="getSubscriberCount")&&_3da.subscribercount_callbackHandlers[_3d9.channel]!=null){
|
_3da.subscribercount_callbackHandlers[_3d9.channel].call(this,_3d9);
|
delete _3da.subscribercount_callbackHandlers[_3d9.channelname];
|
return;
|
}
|
if((_3d9.reqType=="getSubscriptions")&&_3da.subscriptions_callbackHandler!=null){
|
_3da.subscriptions_callbackHandler(_3d9);
|
delete _3da.subscriptions_callbackHandler;
|
return;
|
}
|
if(_3d9.type=="data"&&_3d9.channelname){
|
var _3dc=_3d9.channelname;
|
var _3dd=_3da.channelSpecificResHandlers[_3dc];
|
while(_3dd==null){
|
var lPos=_3dc.lastIndexOf(".");
|
if(lPos>0){
|
_3dc=_3dc.substr(0,lPos);
|
_3dd=_3da.channelSpecificResHandlers[_3dc];
|
}else{
|
break;
|
}
|
}
|
if(_3dd){
|
_3db=_3dd;
|
}
|
}
|
_3db.call(this,_3d9);
|
}};
|
function cfwebsocketinit(){
|
var _3df=ColdFusion.WebSocket;
|
ns=cf_ws;
|
for(var _3e0 in _3df){
|
ns["CFWebSocketWrapper"].prototype[_3e0]=_3df[_3e0];
|
}
|
}
|
cfwebsocketinit();
|