websocket js辅助代码

封装了页面段js代码,页面上就只是处理业务相关逻辑


/**
 * websocket js辅助代码
 * 
 * 配置了断线重连机制
 * 
 * 页面调用形式
 *  var webSocketCal=new tbwebsocket();
 *  //设定断线重连连接次数
 *  webSocketCal.setLimitConnectNum(100);
 *  //https的连接
	webSocketCal.webSocketUrl="wss://xxx/xxx/a/webSocketServer";
	webSocketCal.sockjsUrl="https://xxx/xxx/a/sockjs/webSocketServer";
 *  //http的连接
	//webSocketCal.webSocketUrl="ws://xxx/xxx/a/webSocketServer";
	//webSocketCal.sockjsUrl="http://xxx/xxx/a/sockjs/webSocketServer";
	webSocketCal.setOnerrorEvnt(function(){
		console.log("error");
	});
	webSocketCal.setOncloseEvnt(function(){

		console.log("close");
	});
	webSocketCal.setMessageEvnt(function(jsonData){
	
		
	
	});
	webSocketCal.init();
 */
tbwebsocket=function(){
	this.webSocket=null;
	this.webSocketUrl=null;
	this.sockjsUrl=null;
	//私有function
	var onMessage;
	var onOpen;
	var onError;
	var onClose;
	var fiConnectNum;
	var limitConnectNum;//重新连接指定次数
	this.init=function(){
		if(this.webSocketUrl == null || this.webSocketUrl == undefined || this.webSocketUrl == ''){
			alert("webSocketUrl undefied");
		}else if(this.sockjsUrl == null || this.sockjsUrl == undefined || this.sockjsUrl == ''){
			alert("sockjsUrl undefied");
		}
		if ('WebSocket' in window) {
			this.webSocket=new WebSocket(this.webSocketUrl);
		} else if ('MozWebSocket' in window) {
			this.webSocket = new MozWebSocket(this.webSocketUrl);
		} else {
			this.webSocket = new SockJS(this.sockjsUrl);
		}
		this.webSocket.onmessage = function(evnt) {
			limitConnectNum = fiConnectNum;//链接成功,重置可链接次数
			var jsonData=eval("("+evnt.data+")");
			onMessage(jsonData);
		};
		this.webSocket.onopen=function(evnt){
			if(onOpen){
				onOpen(evnt);
			}
		};
		this.webSocket.onerror=function(evnt){
			if(onError){
				onError(evnt);
			}
		};
		this.webSocket.onclose=function(evnt){
			if(onClose){
				onClose(evnt);
			}
			limitConnectNum = limitConnectNum - 1;
			if(limitConnectNum >= 0){

				this.layConntect(limitConnectNum);
				
			}
		};
	};
	this.layConntect=function(num){
		console.log("正在重连,剩余重连次数:"+num);
		setTimeout(this.init,5000);
	}
	this.setMessageEvnt=function(messageEvnt){
		onMessage=messageEvnt;
	};
	this.setOpenEvnt=function(openEvnt){
		onOpen=openEvnt;
	};
	this.setOnerrorEvnt=function(errorEvnt){
		onError=errorEvnt;
	};
	this.setOncloseEvnt=function(closeEvnt){
		onClose=closeEvnt;
	};
	this.setLimitConnectNum=function(limitNum){
		fiConnectNum = limitNum;
		limitConnectNum = fiConnectNum;
	}
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值