From 9d19f6b9d6b361d8b93671a553973289b40d9d33 Mon Sep 17 00:00:00 2001 From: 648540858 <648540858@qq.com> Date: 星期五, 22 一月 2021 09:52:11 +0800 Subject: [PATCH] Merge pull request #46 from lawrencehj/wvp-28181-2.0 --- src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEventListener.java | 39 +++++++++++++++++++++++++-------------- 1 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEventListener.java index 1b2f672..2b56326 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEventListener.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEventListener.java @@ -4,6 +4,10 @@ import org.springframework.stereotype.Component; import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; import java.io.IOException; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,10 +22,10 @@ private final static Logger logger = LoggerFactory.getLogger(AlarmEventListener.class); - private static SseEmitter emitter = new SseEmitter(); + private static Map<String, SseEmitter> sseEmitters = new Hashtable<>(); - public void addSseEmitters(SseEmitter sseEmitter) { - emitter = sseEmitter; + public void addSseEmitters(String browserId, SseEmitter sseEmitter) { + sseEmitters.put(browserId, sseEmitter); } @Override @@ -30,18 +34,25 @@ logger.debug("璁惧鎶ヨ浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getAlarmInfo().getDeviceId() + ", " + event.getAlarmInfo().getAlarmDescription()); } - try { - String msg = "<strong>璁惧缂栫爜锛�</strong> <i>" + event.getAlarmInfo().getDeviceId() + "</i>" - + "<br><strong>鎶ヨ鎻忚堪锛�</strong> <i>" + event.getAlarmInfo().getAlarmDescription() + "</i>" - + "<br><strong>鎶ヨ鏃堕棿锛�</strong> <i>" + event.getAlarmInfo().getAlarmTime() + "</i>" - + "<br><strong>瀹氫綅缁忓害锛�</strong> <i>" + event.getAlarmInfo().getLongitude() + "</i>" - + "<br><strong>瀹氫綅绾害锛�</strong> <i>" + event.getAlarmInfo().getLatitude() + "</i>"; - emitter.send(msg); - } catch (IOException e) { - if (logger.isDebugEnabled()) { - logger.debug("SSE 閫氶亾宸插叧闂�"); + String msg = "<strong>璁惧缂栫爜锛�</strong> <i>" + event.getAlarmInfo().getDeviceId() + "</i>" + + "<br><strong>鎶ヨ鎻忚堪锛�</strong> <i>" + event.getAlarmInfo().getAlarmDescription() + "</i>" + + "<br><strong>鎶ヨ鏃堕棿锛�</strong> <i>" + event.getAlarmInfo().getAlarmTime() + "</i>" + + "<br><strong>鎶ヨ浣嶇疆锛�</strong> <i>" + event.getAlarmInfo().getLongitude() + "</i>" + + ", <i>" + event.getAlarmInfo().getLatitude() + "</i>"; + + for (Iterator<Map.Entry<String, SseEmitter>> it = sseEmitters.entrySet().iterator(); it.hasNext();) { + Map.Entry<String, SseEmitter> emitter = it.next(); + logger.info("鎺ㄩ�佸埌SSE杩炴帴锛屾祻瑙堝櫒ID: " + emitter.getKey()); + try { + emitter.getValue().send(msg); + } catch (IOException | IllegalStateException e) { + if (logger.isDebugEnabled()) { + logger.debug("SSE杩炴帴宸插叧闂�"); + } + // 绉婚櫎宸插叧闂殑杩炴帴 + it.remove(); + // e.printStackTrace(); } - // e.printStackTrace(); } } } -- Gitblit v1.8.0