Commit f84eebdb75a6af1894b057b0255b01992bdd4f03
1 parent
d891b89c
优化部分hook订阅
Showing
4 changed files
with
14 additions
and
16 deletions
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); | ... | ... |