| | |
| | | |
| | | @Override |
| | | public Results chaseCarByCarId(String usersId, String carId, String cycle) { |
| | | String sessionId = ""; |
| | | for(String key : ONLINE_USER_SESSIONS.keySet()){ |
| | | if(key.startsWith(usersId + "_")){ |
| | | sessionId = key; |
| | | } |
| | | } |
| | | if(sessionId.equals("")){//没有session就返回失败 |
| | | return Results.error("追踪失败"); |
| | | } |
| | | try { |
| | | /*Map<String,Map<String,Object>> map = new HashMap(); |
| | | map.put(carId,new HashMap()); |
| | | PositionContainer.getUserPositionMap().put(usersId,map);*/ |
| | | if (cycle.equals("0")) { |
| | | if (userCarTimerMap.get(usersId) != null) { |
| | | userCarTimerMap.get(usersId).cancel(); |
| | | userCarTimerMap.remove(usersId); |
| | | PositionContainer.getUserPositionMap().remove(usersId); |
| | | System.out.println("停止追踪"); |
| | | } |
| | | return Results.succeed("停止追踪"); |
| | | } else { |
| | |
| | | map.put(carId, new HashMap()); |
| | | PositionContainer.getUserPositionMap().put(usersId, map); |
| | | Date date = new Date(); |
| | | Timer carPositionTimer = new Timer();//定时推送实时位置 |
| | | Timer carPositionTimer = new Timer(sessionId);//定时推送实时位置 |
| | | TimerTask carPositionTask = new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | |
| | | if (position.size() != 0) { |
| | | Map<String, Map<String, Object>> data = new HashMap(); |
| | | data.put("31000", position); |
| | | //WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(usersId), JSON.toJSONString(data)); |
| | | String sessionId = ""; |
| | | for(String key : ONLINE_USER_SESSIONS.keySet()){ |
| | | if(key.startsWith(usersId + "_")){ |
| | | sessionId = key; |
| | | } |
| | | } |
| | | if(sessionId.equals("")){//用户离线释放资源 |
| | | String sessionId = Thread.currentThread().getName(); |
| | | if(ONLINE_USER_SESSIONS.get(sessionId) == null){//用户离线释放资源 |
| | | if (userCarTimerMap.get(usersId) != null) { |
| | | userCarTimerMap.get(usersId).cancel(); |
| | | userCarTimerMap.remove(usersId); |
| | | PositionContainer.getUserPositionMap().remove(usersId); |
| | | System.out.println("用户离线,停止追踪"); |
| | | } |
| | | } |
| | | WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(sessionId), JSON.toJSONString(data)); |
| | |
| | | map.put(carId, new HashMap()); |
| | | PositionContainer.getUserPositionMap().put(usersId, map); |
| | | Date date = new Date(); |
| | | Timer carPositionTimer = new Timer();//定时推送实时位置 |
| | | Timer carPositionTimer = new Timer(sessionId);//定时推送实时位置 |
| | | TimerTask carPositionTask = new TimerTask() { |
| | | @Override |
| | | public void run() { |
| | |
| | | if (position.size() != 0) { |
| | | Map<String, Map<String, Object>> data = new HashMap(); |
| | | data.put("31000", position); |
| | | //WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(usersId), JSON.toJSONString(data)); |
| | | String sessionId = ""; |
| | | for(String key : ONLINE_USER_SESSIONS.keySet()){ |
| | | if(key.startsWith(usersId + "_")){ |
| | | sessionId = key; |
| | | } |
| | | } |
| | | if(sessionId.equals("")){//用户离线释放资源 |
| | | String sessionId = Thread.currentThread().getName(); |
| | | if(ONLINE_USER_SESSIONS.get(sessionId) == null){//用户离线释放资源 |
| | | if (userCarTimerMap.get(usersId) != null) { |
| | | userCarTimerMap.get(usersId).cancel(); |
| | | userCarTimerMap.remove(usersId); |
| | | PositionContainer.getUserPositionMap().remove(usersId); |
| | | System.out.println("用户离线,停止追踪"); |
| | | } |
| | | } |
| | | WebSocketUtils.sendMessage(ONLINE_USER_SESSIONS.get(sessionId), JSON.toJSONString(data)); |