Commit f84eebdb75a6af1894b057b0255b01992bdd4f03

Authored by 648540858
1 parent d891b89c

优化部分hook订阅

src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMHttpHookListener.java
... ... @@ -108,6 +108,7 @@ public class ZLMHttpHookListener {
108 108 subscribe.response(null, json);
109 109 }
110 110 }
  111 + mediaServerService.updateMediaServerKeepalive(mediaServerId, json.getJSONObject("data"));
111 112  
112 113 JSONObject ret = new JSONObject();
113 114 ret.put("code", 0);
... ... @@ -619,10 +620,15 @@ public class ZLMHttpHookListener {
619 620 subscribe.response(null, jsonObject);
620 621 }
621 622 }
  623 +
  624 + ZLMServerConfig zlmServerConfig = JSONObject.toJavaObject(jsonObject, ZLMServerConfig.class);
  625 + if (zlmServerConfig !=null ) {
  626 + mediaServerService.zlmServerOnline(zlmServerConfig);
  627 + }
622 628 JSONObject ret = new JSONObject();
623 629 ret.put("code", 0);
624 630 ret.put("msg", "success");
625   - return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
  631 + return new ResponseEntity<>(ret.toString(),HttpStatus.OK);
626 632 }
627 633  
628 634 private Map<String, String> urlParamToMap(String params) {
... ...
src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRunner.java
... ... @@ -75,19 +75,9 @@ public class ZLMRunner implements CommandLineRunner {
75 75 if (startGetMedia != null) {
76 76 startGetMedia.remove(zlmServerConfig.getGeneralMediaServerId());
77 77 }
78   - mediaServerService.zlmServerOnline(zlmServerConfig);
79 78 }
80 79 });
81 80  
82   - // 订阅 zlm保活事件, 当zlm离线时做业务的处理
83   - hookSubscribe.addSubscribe(ZLMHttpHookSubscribe.HookType.on_server_keepalive,new JSONObject(),
84   - (MediaServerItem mediaServerItem, JSONObject response)->{
85   - String mediaServerId = response.getString("mediaServerId");
86   - if (mediaServerId !=null ) {
87   - mediaServerService.updateMediaServerKeepalive(mediaServerId, response.getJSONObject("data"));
88   - }
89   - });
90   -
91 81 // 获取zlm信息
92 82 logger.info("[zlm] 等待默认zlm中...");
93 83  
... ... @@ -113,6 +103,7 @@ public class ZLMRunner implements CommandLineRunner {
113 103 }
114 104 startGetMedia = null;
115 105 }
  106 + hookSubscribe.removeSubscribe(ZLMHttpHookSubscribe.HookType.on_server_started, new JSONObject());
116 107 // TODO 清理数据库中与redis不匹配的zlm
117 108 }, 60 * 1000 );
118 109 }
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
... ... @@ -355,14 +355,15 @@ public class MediaServerServiceImpl implements IMediaServerService {
355 355 */
356 356 @Override
357 357 public void zlmServerOnline(ZLMServerConfig zlmServerConfig) {
358   - logger.info("[ZLM] 正在连接 : {} -> {}:{}",
359   - zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(), zlmServerConfig.getHttpPort());
360 358  
361 359 MediaServerItem serverItem = mediaServerMapper.queryOne(zlmServerConfig.getGeneralMediaServerId());
362 360 if (serverItem == null) {
363 361 logger.warn("[未注册的zlm] 拒接接入:{}来自{}:{}", zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(),zlmServerConfig.getHttpPort() );
364 362 logger.warn("请检查ZLM的<general.mediaServerId>配置是否与WVP的<media.id>一致");
365 363 return;
  364 + }else {
  365 + logger.info("[ZLM] 正在连接 : {} -> {}:{}",
  366 + zlmServerConfig.getGeneralMediaServerId(), zlmServerConfig.getIp(), zlmServerConfig.getHttpPort());
366 367 }
367 368 serverItem.setHookAliveInterval(zlmServerConfig.getHookAliveInterval());
368 369 if (serverItem.getHttpPort() == 0) {
... ...
src/main/java/com/genersoft/iot/vmp/service/impl/RedisPushStreamStatusMsgListener.java
... ... @@ -66,7 +66,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
66 66 @Override
67 67 public void onMessage(Message message, byte[] bytes) {
68 68 // TODO 增加队列
69   - logger.warn("[REDIS 消息-推流设备状态变化]: {}", new String(message.getBody()));
  69 + logger.warn("[REDIS消息-推流设备状态变化]: {}", new String(message.getBody()));
70 70 taskQueue.offer(message);
71 71  
72 72 if (!taskQueueHandlerRun) {
... ... @@ -76,7 +76,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
76 76 Message msg = taskQueue.poll();
77 77 PushStreamStatusChangeFromRedisDto statusChangeFromPushStream = JSON.parseObject(msg.getBody(), PushStreamStatusChangeFromRedisDto.class);
78 78 if (statusChangeFromPushStream == null) {
79   - logger.warn("[REDIS 消息]推流设备状态变化消息解析失败");
  79 + logger.warn("[REDIS消息]推流设备状态变化消息解析失败");
80 80 return;
81 81 }
82 82 // 取消定时任务
... ... @@ -106,7 +106,7 @@ public class RedisPushStreamStatusMsgListener implements MessageListener, Applic
106 106 // 启动时设置所有推流通道离线,发起查询请求
107 107 redisCatchStorage.sendStreamPushRequestedMsgForStatus();
108 108 dynamicTask.startDelay(VideoManagerConstants.VM_MSG_GET_ALL_ONLINE_REQUESTED, ()->{
109   - logger.info("[REDIS 消息]未收到redis回复推流设备状态,执行推流设备离线");
  109 + logger.info("[REDIS消息]未收到redis回复推流设备状态,执行推流设备离线");
110 110 // 五秒收不到请求就设置通道离线,然后通知上级离线
111 111 streamPushService.allStreamOffline();
112 112 }, 5000);
... ...