webSocketHandle.js 2.25 KB
/** web socket */
!function(){
var reqCodeMap = {0xA1: '请求恢复运营', 0xA2: '申请调档', 0xA3: '出场请求', 0xA5: '进场请求', 0xA7: '加油请求', 0x50: '车辆故障', 0x70: '路阻报告', 0x60: '事故报告', 0x11: '扣证纠纷', 0x12 : '报警'};

	
//将当前用户和线路绑定到后台
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);
	    }
	};
};

var msgHandle = {
	//驾驶员80上报处理
	report80: function(msg){
		msg.dateStr = moment(msg.timestamp).format('HH:mm');
		msg.text = reqCodeMap[msg.data.requestCode];
		
		appendLogItem('console_80_temp', msg, msg.data.lineId);
	},
	//车辆发出
	faChe: function(msg){
		//刷新数据
		_alone.refreshSchedule(msg.t);
		//信使
		appendLogItem('console_fache_temp', msg, msg.t.xlBm);
	},
	//到达终点
	zhongDian: function(msg){
		//刷新数据
		_alone.refreshSchedule(msg.t);
		_alone.refreshSchedule(msg.nt);
		//信使
		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);
	}
};


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

}();