From 62f716be9cd1cee2a5fba566db3fcd43bd9fc4cc Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期三, 03 四月 2024 15:04:33 +0800
Subject: [PATCH] 添加idea logo
---
src/main/java/com/genersoft/iot/vmp/gb28181/event/alarm/AlarmEventListener.java | 77 ++++++++++++++++++++++----------------
1 files changed, 45 insertions(+), 32 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 9ee6477..aef5907 100755
--- 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
@@ -1,55 +1,68 @@
package com.genersoft.iot.vmp.gb28181.event.alarm;
-import org.springframework.context.ApplicationListener;
-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.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+import java.io.PrintWriter;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
- * @description: 鎶ヨ浜嬩欢鐩戝惉
- * @author: lawrencehj
- * @data: 2021-01-20
+ * 鎶ヨ浜嬩欢鐩戝惉鍣�.
+ *
+ * @author lawrencehj
+ * @author <a href="mailto:xiaoQQya@126.com">xiaoQQya</a>
+ * @since 2021/01/20
*/
-
@Component
public class AlarmEventListener implements ApplicationListener<AlarmEvent> {
- private final static Logger logger = LoggerFactory.getLogger(AlarmEventListener.class);
+ private static final Logger logger = LoggerFactory.getLogger(AlarmEventListener.class);
- private static Map<String, SseEmitter> sseEmitters = new Hashtable<>();
+ private static final Map<String, PrintWriter> SSE_CACHE = new ConcurrentHashMap<>();
- public void addSseEmitters(String browserId, SseEmitter sseEmitter) {
- sseEmitters.put(browserId, sseEmitter);
+ public void addSseEmitter(String browserId, PrintWriter writer) {
+ SSE_CACHE.put(browserId, writer);
+ logger.info("SSE 鍦ㄧ嚎鏁伴噺: {}", SSE_CACHE.size());
+ }
+
+ public void removeSseEmitter(String browserId, PrintWriter writer) {
+ SSE_CACHE.remove(browserId, writer);
+ logger.info("SSE 鍦ㄧ嚎鏁伴噺: {}", SSE_CACHE.size());
}
@Override
- public void onApplicationEvent(AlarmEvent event) {
+ public void onApplicationEvent(@NotNull AlarmEvent event) {
if (logger.isDebugEnabled()) {
- logger.debug("璁惧鎶ヨ浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getAlarmInfo().getDeviceId() + ", "
- + event.getAlarmInfo().getAlarmDescription());
+ logger.debug("璁惧鎶ヨ浜嬩欢瑙﹀彂, deviceId: {}, {}", event.getAlarmInfo().getDeviceId(), event.getAlarmInfo().getAlarmDescription());
}
- 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());
+ String msg = "<strong>璁惧缂栧彿锛�</strong> <i>" + event.getAlarmInfo().getDeviceId() + "</i>"
+ + "<br><strong>閫氶亾缂栧彿锛�</strong> <i>" + event.getAlarmInfo().getChannelId() + "</i>"
+ + "<br><strong>鎶ヨ鎻忚堪锛�</strong> <i>" + event.getAlarmInfo().getAlarmDescription() + "</i>"
+ + "<br><strong>鎶ヨ鏃堕棿锛�</strong> <i>" + event.getAlarmInfo().getAlarmTime() + "</i>";
+
+ for (Iterator<Map.Entry<String, PrintWriter>> it = SSE_CACHE.entrySet().iterator(); it.hasNext(); ) {
+ Map.Entry<String, PrintWriter> response = it.next();
+ logger.info("鎺ㄩ�佸埌 SSE 杩炴帴, 娴忚鍣� ID: {}", response.getKey());
try {
- emitter.getValue().send(msg);
- } catch (IOException | IllegalStateException e) {
- if (logger.isDebugEnabled()) {
- logger.debug("SSE杩炴帴宸插叧闂�");
+ PrintWriter writer = response.getValue();
+
+ if (writer.checkError()) {
+ it.remove();
+ continue;
}
- // 绉婚櫎宸插叧闂殑杩炴帴
+
+ String sseMsg = "event:message\n" +
+ "data:" + msg + "\n" +
+ "\n";
+ writer.write(sseMsg);
+ writer.flush();
+ } catch (Exception e) {
it.remove();
}
}
--
Gitblit v1.8.0