优化级联平台注册的周期时间

This commit is contained in:
648540858 2022-09-02 15:49:40 +08:00
parent ac9eda4931
commit 373bfdc44c
4 changed files with 149 additions and 48 deletions

View File

@ -90,7 +90,7 @@ public class ParentPlatform {
* 心跳周期() * 心跳周期()
*/ */
@Schema(description = "心跳周期(秒)") @Schema(description = "心跳周期(秒)")
private String keepTimeout; private int keepTimeout;
/** /**
* 传输协议 * 传输协议
@ -294,11 +294,11 @@ public class ParentPlatform {
this.expires = expires; this.expires = expires;
} }
public String getKeepTimeout() { public int getKeepTimeout() {
return keepTimeout; return keepTimeout;
} }
public void setKeepTimeout(String keepTimeout) { public void setKeepTimeout(int keepTimeout) {
this.keepTimeout = keepTimeout; this.keepTimeout = keepTimeout;
} }

View File

@ -0,0 +1,106 @@
package com.genersoft.iot.vmp.gb28181.conf;
import gov.nist.core.StackLogger;
import java.util.Properties;
/**
* sip日志格式化
*/
public class SipLoggerPass implements StackLogger {
@Override
public void logStackTrace() {
}
@Override
public void logStackTrace(int traceLevel) {
}
@Override
public int getLineCount() {
return 0;
}
@Override
public void logException(Throwable ex) {
}
@Override
public void logDebug(String message) {
}
@Override
public void logDebug(String message, Exception ex) {
}
@Override
public void logTrace(String message) {
}
@Override
public void logFatalError(String message) {
}
@Override
public void logError(String message) {
}
@Override
public boolean isLoggingEnabled() {
return false;
}
@Override
public boolean isLoggingEnabled(int logLevel) {
return false;
}
@Override
public void logError(String message, Exception ex) {
}
@Override
public void logWarning(String string) {
}
@Override
public void logInfo(String string) {
}
@Override
public void disableLogging() {
}
@Override
public void enableLogging() {
}
@Override
public void setBuildTimeStamp(String buildTimeStamp) {
}
@Override
public void setStackProperties(Properties stackProperties) {
}
@Override
public String getLoggerName() {
return null;
}
}

View File

@ -103,7 +103,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_server_keepalive", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_server_keepalive", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onServerKeepalive(@RequestBody JSONObject json){ public JSONObject onServerKeepalive(@RequestBody JSONObject json){
logger.info("[ ZLM HOOK ] on_server_keepalive API调用参数" + json.toString()); logger.info("[ ZLM HOOK ] on_server_keepalive API调用参数" + json.toString());
String mediaServerId = json.getString("mediaServerId"); String mediaServerId = json.getString("mediaServerId");
@ -118,7 +118,8 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK);
return ret;
} }
/** /**
@ -127,16 +128,15 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_flow_report", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_flow_report", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onFlowReport(@RequestBody JSONObject json){ public JSONObject onFlowReport(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_flow_report API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_flow_report API调用参数" + json.toString());
} }
String mediaServerId = json.getString("mediaServerId");
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -145,7 +145,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_http_access", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_http_access", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onHttpAccess(@RequestBody JSONObject json){ public JSONObject onHttpAccess(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_http_access API 调用,参数:" + json.toString()); logger.debug("[ ZLM HOOK ]on_http_access API 调用,参数:" + json.toString());
@ -156,7 +156,7 @@ public class ZLMHttpHookListener {
ret.put("err", ""); ret.put("err", "");
ret.put("path", ""); ret.put("path", "");
ret.put("second", 600); ret.put("second", 600);
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -165,7 +165,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_play", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onPlay(@RequestBody OnPlayHookParam param){ public JSONObject onPlay(@RequestBody OnPlayHookParam param){
JSONObject json = (JSONObject)JSON.toJSON(param); JSONObject json = (JSONObject)JSON.toJSON(param);
@ -187,13 +187,13 @@ public class ZLMHttpHookListener {
if (streamAuthorityInfo != null && streamAuthorityInfo.getCallId() != null && !streamAuthorityInfo.getCallId().equals(paramMap.get("callId"))) { if (streamAuthorityInfo != null && streamAuthorityInfo.getCallId() != null && !streamAuthorityInfo.getCallId().equals(paramMap.get("callId"))) {
ret.put("code", 401); ret.put("code", 401);
ret.put("msg", "Unauthorized"); ret.put("msg", "Unauthorized");
return new ResponseEntity<>(ret.toString(),HttpStatus.OK); return ret;
} }
} }
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -202,7 +202,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_publish", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_publish", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onPublish(@RequestBody OnPublishHookParam param) { public JSONObject onPublish(@RequestBody OnPublishHookParam param) {
JSONObject json = (JSONObject) JSON.toJSON(param); JSONObject json = (JSONObject) JSON.toJSON(param);
@ -216,7 +216,7 @@ public class ZLMHttpHookListener {
logger.info("推流鉴权失败: 缺少不要参数sign=md5(user表的pushKey)"); logger.info("推流鉴权失败: 缺少不要参数sign=md5(user表的pushKey)");
ret.put("code", 401); ret.put("code", 401);
ret.put("msg", "Unauthorized"); ret.put("msg", "Unauthorized");
return new ResponseEntity<>(ret.toString(), HttpStatus.OK); return ret;
} }
Map<String, String> paramMap = urlParamToMap(param.getParams()); Map<String, String> paramMap = urlParamToMap(param.getParams());
String sign = paramMap.get("sign"); String sign = paramMap.get("sign");
@ -224,7 +224,7 @@ public class ZLMHttpHookListener {
logger.info("推流鉴权失败: 缺少不要参数sign=md5(user表的pushKey)"); logger.info("推流鉴权失败: 缺少不要参数sign=md5(user表的pushKey)");
ret.put("code", 401); ret.put("code", 401);
ret.put("msg", "Unauthorized"); ret.put("msg", "Unauthorized");
return new ResponseEntity<>(ret.toString(), HttpStatus.OK); return ret;
} }
// 推流自定义播放鉴权码 // 推流自定义播放鉴权码
String callId = paramMap.get("callId"); String callId = paramMap.get("callId");
@ -234,7 +234,7 @@ public class ZLMHttpHookListener {
logger.info("推流鉴权失败: sign 无权限: callId={}. sign={}", callId, sign); logger.info("推流鉴权失败: sign 无权限: callId={}. sign={}", callId, sign);
ret.put("code", 401); ret.put("code", 401);
ret.put("msg", "Unauthorized"); ret.put("msg", "Unauthorized");
return new ResponseEntity<>(ret.toString(), HttpStatus.OK); return ret;
} }
StreamAuthorityInfo streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param); StreamAuthorityInfo streamAuthorityInfo = StreamAuthorityInfo.getInstanceByHook(param);
streamAuthorityInfo.setCallId(callId); streamAuthorityInfo.setCallId(callId);
@ -242,12 +242,11 @@ public class ZLMHttpHookListener {
// 鉴权通过 // 鉴权通过
redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo); redisCatchStorage.updateStreamAuthorityInfo(param.getApp(), param.getStream(), streamAuthorityInfo);
// 通知assist新的callId // 通知assist新的callId
taskExecutor.execute(()->{ if (mediaInfo != null && mediaInfo.getRecordAssistPort() > 0) {
if (mediaInfo != null && mediaInfo.getRecordAssistPort() > 0) { taskExecutor.execute(()->{
assistRESTfulUtils.addStreamCallInfo(mediaInfo, param.getApp(), param.getStream(), callId, null); assistRESTfulUtils.addStreamCallInfo(mediaInfo, param.getApp(), param.getStream(), callId, null);
} });
}); }
}else { }else {
zlmMediaListManager.sendStreamEvent(param.getApp(),param.getStream(), param.getMediaServerId()); zlmMediaListManager.sendStreamEvent(param.getApp(),param.getStream(), param.getMediaServerId());
} }
@ -291,10 +290,7 @@ public class ZLMHttpHookListener {
} }
} }
return ret;
return new ResponseEntity<String>(ret.toString(), HttpStatus.OK);
} }
@ -305,7 +301,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_record_mp4", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_record_mp4", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onRecordMp4(@RequestBody JSONObject json){ public JSONObject onRecordMp4(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_record_mp4 API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_record_mp4 API调用参数" + json.toString());
@ -314,7 +310,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
* 录制hls完成后通知事件此事件对回复不敏感 * 录制hls完成后通知事件此事件对回复不敏感
@ -322,7 +318,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_record_ts", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_record_ts", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onRecordTs(@RequestBody JSONObject json){ public JSONObject onRecordTs(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_record_ts API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_record_ts API调用参数" + json.toString());
@ -331,7 +327,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -340,7 +336,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_rtsp_realm", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_rtsp_realm", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onRtspRealm(@RequestBody JSONObject json){ public JSONObject onRtspRealm(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_rtsp_realm API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_rtsp_realm API调用参数" + json.toString());
@ -349,7 +345,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("realm", ""); ret.put("realm", "");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
@ -359,7 +355,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_rtsp_auth", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_rtsp_auth", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onRtspAuth(@RequestBody JSONObject json){ public JSONObject onRtspAuth(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_rtsp_auth API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_rtsp_auth API调用参数" + json.toString());
@ -369,7 +365,7 @@ public class ZLMHttpHookListener {
ret.put("code", 0); ret.put("code", 0);
ret.put("encrypted", false); ret.put("encrypted", false);
ret.put("passwd", "test"); ret.put("passwd", "test");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -378,7 +374,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_shell_login", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_shell_login", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onShellLogin(@RequestBody JSONObject json){ public JSONObject onShellLogin(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_shell_login API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_shell_login API调用参数" + json.toString());
@ -396,7 +392,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -405,7 +401,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_stream_changed", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onStreamChanged(@RequestBody MediaItem item){ public JSONObject onStreamChanged(@RequestBody MediaItem item){
logger.info("[ ZLM HOOK ]on_stream_changed API调用参数" + JSONObject.toJSONString(item)); logger.info("[ ZLM HOOK ]on_stream_changed API调用参数" + JSONObject.toJSONString(item));
String mediaServerId = item.getMediaServerId(); String mediaServerId = item.getMediaServerId();
@ -520,7 +516,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -529,7 +525,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_stream_none_reader", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_stream_none_reader", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onStreamNoneReader(@RequestBody JSONObject json){ public JSONObject onStreamNoneReader(@RequestBody JSONObject json){
logger.info("[ ZLM HOOK ]on_stream_none_reader API调用参数" + json.toString()); logger.info("[ ZLM HOOK ]on_stream_none_reader API调用参数" + json.toString());
String mediaServerId = json.getString("mediaServerId"); String mediaServerId = json.getString("mediaServerId");
@ -574,7 +570,7 @@ public class ZLMHttpHookListener {
if (mediaServerItem != null && mediaServerItem.getStreamNoneReaderDelayMS() == -1) { if (mediaServerItem != null && mediaServerItem.getStreamNoneReaderDelayMS() == -1) {
ret.put("close", false); ret.put("close", false);
} }
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
}else { }else {
StreamProxyItem streamProxyItem = streamProxyService.getStreamProxyByAppAndStream(app, streamId); StreamProxyItem streamProxyItem = streamProxyService.getStreamProxyByAppAndStream(app, streamId);
if (streamProxyItem != null && streamProxyItem.isEnable_remove_none_reader()) { if (streamProxyItem != null && streamProxyItem.isEnable_remove_none_reader()) {
@ -585,7 +581,7 @@ public class ZLMHttpHookListener {
}else { }else {
ret.put("close", false); ret.put("close", false);
} }
return new ResponseEntity<String>(ret.toString(),HttpStatus.OK); return ret;
} }
} }
@ -595,7 +591,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_stream_not_found", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_stream_not_found", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onStreamNotFound(@RequestBody JSONObject json){ public JSONObject onStreamNotFound(@RequestBody JSONObject json){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_stream_not_found API调用参数" + json.toString()); logger.debug("[ ZLM HOOK ]on_stream_not_found API调用参数" + json.toString());
} }
@ -620,7 +616,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<>(ret.toString(),HttpStatus.OK); return ret;
} }
/** /**
@ -629,7 +625,7 @@ public class ZLMHttpHookListener {
*/ */
@ResponseBody @ResponseBody
@PostMapping(value = "/on_server_started", produces = "application/json;charset=UTF-8") @PostMapping(value = "/on_server_started", produces = "application/json;charset=UTF-8")
public ResponseEntity<String> onServerStarted(HttpServletRequest request, @RequestBody JSONObject jsonObject){ public JSONObject onServerStarted(HttpServletRequest request, @RequestBody JSONObject jsonObject){
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
logger.debug("[ ZLM HOOK ]on_server_started API调用参数" + jsonObject.toString()); logger.debug("[ ZLM HOOK ]on_server_started API调用参数" + jsonObject.toString());
@ -650,7 +646,7 @@ public class ZLMHttpHookListener {
JSONObject ret = new JSONObject(); JSONObject ret = new JSONObject();
ret.put("code", 0); ret.put("code", 0);
ret.put("msg", "success"); ret.put("msg", "success");
return new ResponseEntity<>(ret.toString(),HttpStatus.OK); return ret;
} }
private Map<String, String> urlParamToMap(String params) { private Map<String, String> urlParamToMap(String params) {

View File

@ -125,7 +125,7 @@ public class PlatformServiceImpl implements IPlatformService {
dynamicTask.startDelay(registerTaskKey, dynamicTask.startDelay(registerTaskKey,
// 注册失败注册成功时由程序直接调用了online方法 // 注册失败注册成功时由程序直接调用了online方法
()->commanderForPlatform.register(parentPlatform, eventResult -> offline(parentPlatform),null), ()->commanderForPlatform.register(parentPlatform, eventResult -> offline(parentPlatform),null),
parentPlatform.getExpires()*1000); (parentPlatform.getExpires() - 10) *1000);
final String keepaliveTaskKey = KEEPALIVE_KEY_PREFIX + parentPlatform.getServerGBId(); final String keepaliveTaskKey = KEEPALIVE_KEY_PREFIX + parentPlatform.getServerGBId();
if (!dynamicTask.contains(keepaliveTaskKey)) { if (!dynamicTask.contains(keepaliveTaskKey)) {
@ -164,7 +164,7 @@ public class PlatformServiceImpl implements IPlatformService {
redisCatchStorage.updatePlatformCatchInfo(platformCatch); redisCatchStorage.updatePlatformCatchInfo(platformCatch);
} }
}), }),
parentPlatform.getExpires()*1000); (parentPlatform.getKeepTimeout() - 10)*1000);
} }
} }
@ -213,7 +213,6 @@ public class PlatformServiceImpl implements IPlatformService {
param.put("stream", sendRtpItem.getStreamId()); param.put("stream", sendRtpItem.getStreamId());
zlmrtpServerFactory.stopSendRtpStream(mediaInfo, param); zlmrtpServerFactory.stopSendRtpStream(mediaInfo, param);
} }
} }
} }