| | |
| | | //app位置上传 |
| | | public static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(20); |
| | | public static final Map<Session, ScheduledFuture<?>> taskMap = new HashMap<>(); |
| | | public static final Map<String, List<ArdAppPosition>> defaultDataMap = new HashMap<>();//默认会话发送数据map |
| | | public static final Map<String, List<ArdAppPosition>> initDataMap = new HashMap<>();//每个会话初始发送数据map |
| | | |
| | | // 初始定时任务,根据用户设置的频率定期推送实时位置信息 |
| | | public static void initPushTask(String userId,Session session, int pushFrequency) { |
| | | defaultDataMap.put(userId,getAppPositionList()); |
| | | initDataMap.put(userId, getAppPositionList()); |
| | | // 启动新的定时任务 |
| | | if (pushFrequency > 0) { |
| | | scheduler.scheduleAtFixedRate(() -> { |
| | | List<ArdAppPosition> appPositionList = defaultDataMap.get(userId); |
| | | List<ArdAppPosition> appPositionList = initDataMap.get(userId); |
| | | Map newMap = new HashMap<>(); |
| | | newMap.put("50000", appPositionList); |
| | | WebSocketUtils.sendMessage(session, newMap); |
| | |
| | | stopLocationPushTask(session); |
| | | // 启动新的定时任务 |
| | | if (pushFrequency > 0) { |
| | | ScheduledFuture<?> task = ScheduledFutureTask(session, userId,guideUserId, pushFrequency); |
| | | taskMap.put(session, task); // 存储新的定时任务 |
| | | } |
| | | } |
| | | |
| | | public static ScheduledFuture<?> ScheduledFutureTask(Session session, String userId,String guideUserId, Integer pushFrequency) { |
| | | return scheduler.scheduleAtFixedRate(() -> { |
| | | ScheduledFuture<?> task = scheduler.scheduleAtFixedRate(() -> { |
| | | List<ArdAppPosition> appPositionList = getAppPositionList().stream() |
| | | .filter(obj -> obj.getUserId().equals(guideUserId)) |
| | | .collect(Collectors.toList()); |
| | |
| | | newMap.put("50000", appPositionList); |
| | | WebSocketUtils.sendMessage(session, newMap); |
| | | }, 0, pushFrequency, TimeUnit.MILLISECONDS); |
| | | taskMap.put(session, task); // 存储新的定时任务 |
| | | } |
| | | } |
| | | |
| | | //取消定时任务 |