webSocketHandle.js 2.57 KB
/** web socket */
!function(){
	
//将当前用户和线路绑定到后台
setTimeout(function(){
	$.get('/realSchedule/registerLine', {lineCodes: lineCodes}
	,function(rs){
		if(rs == 0){
			console.log('注册线路成功!');
			initWebSocket();
		}
	});
}, 500);

//初始化webSocket
var msgSock;
var initWebSocket = function(){
	msgSock = new SockJS('/sockjs/realcontrol');

	msgSock.onopen = function(e) {
	    console.log('webSocket[realcontrol] onopen');
	};
	//接收消息
	msgSock.onmessage = function(e) {
	    try{
	    	var jsonMsg = $.parseJSON(e.data);
	    	msgHandle[jsonMsg.fn](jsonMsg);
	    }catch(e){
	   	 	console.log(e);
	    }
	};
	
	//断开
	msgSock.onclose = function(e) {
		alert('和服务器连接断开....');
		window.location.reload(true);
	};
};

var msgHandle = {
	//驾驶员80
	report80: function(msg){
		msg.dateStr = moment(msg.timestamp).format('HH:mm.ss');
		msg.text = reqCodeMap[msg.data.requestCode];
		
		console.log(msg);
		appendLogItem('console_80_temp', {list: [msg]}, msg.data.lineId);
	},
	//驾驶员80被处理
	d80Confirm: function(msg){
		_fadeOut($('.log-item.handle[data-id='+msg.id+']'));
	},
	//车辆发出
	faChe: function(msg){
		//刷新数据
		_alone.refreshSchedule(msg.t);
		msg.jsTime = Date.parse(new Date()) / 1000;
		//信使
		appendLogItem('console_fache_temp', msg, msg.t.xlBm);
	},
	//到达终点
	zhongDian: function(msg){
		//刷新数据
		_alone.refreshSchedule(msg.t);
		_alone.refreshSchedule(msg.nt);
		msg.jsTime = Date.parse(new Date()) / 1000;
		//信使
		appendLogItem('console_zhongdian_temp', msg, msg.t.xlBm);
	},
	//指令状态改变
	directive: function(msg){
		var sch = msg.t;
		if(!sch)return;
		var tab = '#tab_line_' + sch.xlBm;
		//找到行
		var $tr = $('tr[data-id='+sch.id+']', tab);
		//更新指令状态
		var clazz = '';
		switch (sch.directiveState) {
		case 60:
			clazz = 'tl-xxfc';
			break;

		case 100:
			clazz = 'tl-xxsd';
			break;
			
		case 200:
			clazz = 'tl-xxrd';
			break;
		case 0:
			//发送调度指令失败
			break;
		}
		$tr.find('td[data-name=clZbh]').attr('class', clazz);
	},
	refresh: function(msg){
		//刷新
		layer.msg('正在切换到 ' + msg.dateStr + '数据', {icon: 16, shade: 0.6, time: 0});
		setTimeout(function(){
			window.location.reload(true);
		}, 1000);
	}
};


function appendLogItem(tempId, json, lineCode){
	var htmlStr = template(tempId, json);
	
	var logWrap = $('.console-log .log-item-list', '#tab_line_' + lineCode);
	logWrap.prepend(htmlStr);
}

}();