From 5cd3e0e919d427c68d2e21be20f27af9b24622b0 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 16 三月 2023 09:32:21 +0800
Subject: [PATCH] 更新前后端分离部署文档
---
src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java | 65 +++++++++++++++++---------------
1 files changed, 34 insertions(+), 31 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java
index 577e724..39dff93 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/impl/CatalogSubscribeTask.java
@@ -4,14 +4,15 @@
import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.task.ISubscribeTask;
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommander;
+import gov.nist.javax.sip.message.SIPRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import javax.sip.Dialog;
-import javax.sip.DialogState;
-import javax.sip.ResponseEvent;
+import javax.sip.*;
+import javax.sip.header.ToHeader;
+import java.text.ParseException;
import java.util.Timer;
import java.util.TimerTask;
@@ -23,7 +24,7 @@
private final Logger logger = LoggerFactory.getLogger(CatalogSubscribeTask.class);
private Device device;
private final ISIPCommander sipCommander;
- private Dialog dialog;
+ private SIPRequest request;
private DynamicTask dynamicTask;
@@ -41,24 +42,32 @@
if (dynamicTask.get(taskKey) != null) {
dynamicTask.stop(taskKey);
}
- sipCommander.catalogSubscribe(device, dialog, eventResult -> {
- if (eventResult.dialog != null || eventResult.dialog.getState().equals(DialogState.CONFIRMED)) {
- dialog = eventResult.dialog;
- }
- ResponseEvent event = (ResponseEvent) eventResult.event;
- if (event.getResponse().getRawContent() != null) {
+ SIPRequest sipRequest = null;
+ try {
+ sipRequest = sipCommander.catalogSubscribe(device, request, eventResult -> {
+ ResponseEvent event = (ResponseEvent) eventResult.event;
// 鎴愬姛
logger.info("[鐩綍璁㈤槄]鎴愬姛锛� {}", device.getDeviceId());
- }else {
- // 鎴愬姛
- logger.info("[鐩綍璁㈤槄]鎴愬姛锛� {}", device.getDeviceId());
- }
- },eventResult -> {
- dialog = null;
- // 澶辫触
- logger.warn("[鐩綍璁㈤槄]澶辫触锛屼俊浠ゅ彂閫佸け璐ワ細 {}-{} ", device.getDeviceId(), eventResult.msg);
- dynamicTask.startDelay(taskKey, CatalogSubscribeTask.this, 2000);
- });
+ ToHeader toHeader = (ToHeader)event.getResponse().getHeader(ToHeader.NAME);
+ try {
+ this.request.getToHeader().setTag(toHeader.getTag());
+ } catch (ParseException e) {
+ logger.info("[鐩綍璁㈤槄]鎴愬姛锛� 浣嗕负request璁剧疆ToTag澶辫触");
+ this.request = null;
+ }
+ },eventResult -> {
+ this.request = null;
+ // 澶辫触
+ logger.warn("[鐩綍璁㈤槄]澶辫触锛屼俊浠ゅ彂閫佸け璐ワ細 {}-{} ", device.getDeviceId(), eventResult.msg);
+ dynamicTask.startDelay(taskKey, CatalogSubscribeTask.this, 2000);
+ });
+ } catch (InvalidArgumentException | SipException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鐩綍璁㈤槄: {}", e.getMessage());
+
+ }
+ if (sipRequest != null) {
+ this.request = sipRequest;
+ }
}
@Override
@@ -74,9 +83,9 @@
if (dynamicTask.get(taskKey) != null) {
dynamicTask.stop(taskKey);
}
- if (dialog != null && dialog.getState().equals(DialogState.CONFIRMED)) {
- device.setSubscribeCycleForCatalog(0);
- sipCommander.catalogSubscribe(device, dialog, eventResult -> {
+ device.setSubscribeCycleForCatalog(0);
+ try {
+ sipCommander.catalogSubscribe(device, request, eventResult -> {
ResponseEvent event = (ResponseEvent) eventResult.event;
if (event.getResponse().getRawContent() != null) {
// 鎴愬姛
@@ -89,14 +98,8 @@
// 澶辫触
logger.warn("[鍙栨秷鐩綍璁㈤槄璁㈤槄]澶辫触锛屼俊浠ゅ彂閫佸け璐ワ細 {}-{} ", device.getDeviceId(), eventResult.msg);
});
+ } catch (InvalidArgumentException | SipException | ParseException e) {
+ logger.error("[鍛戒护鍙戦�佸け璐 鍙栨秷鐩綍璁㈤槄璁㈤槄: {}", e.getMessage());
}
- }
-
- @Override
- public DialogState getDialogState() {
- if (dialog == null) {
- return null;
- }
- return dialog.getState();
}
}
--
Gitblit v1.8.0