| | |
| | | /** |
| | | * 订阅指定设备的数据 |
| | | */ |
| | | public void subscribe(String boxSn, Long userId) { |
| | | public void subscribe(String boxSn, Long userId,Integer period) { |
| | | subscriptions.computeIfAbsent(boxSn, k -> new HashSet<>()).add(userId); |
| | | if (subscriptions.get(boxSn).size() == 1) { |
| | | startPushTask(boxSn); |
| | | startPushTask(boxSn,period); |
| | | } |
| | | } |
| | | |
| | |
| | | /** |
| | | * 启动推送任务 |
| | | */ |
| | | private void startPushTask(String boxSn) { |
| | | private void startPushTask(String boxSn,Integer period) { |
| | | // 如果已经存在任务,则不再创建 |
| | | if (pushTasks.containsKey(boxSn)) { |
| | | return; |
| | | } |
| | | ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(() -> { |
| | | sendDataToSubscribers(boxSn); |
| | | }, 0, 2, TimeUnit.SECONDS); |
| | | }, 0, period, TimeUnit.SECONDS); |
| | | |
| | | pushTasks.put(boxSn, future); |
| | | } |