648540858
2022-06-04 d3e815bf16541884cf998bda9ae7bcd5b29b87e2
修复订阅超时
2个文件已修改
28 ■■■■ 已修改文件
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -32,7 +32,9 @@
import org.springframework.util.StringUtils;
import javax.sip.*;
import javax.sip.address.Address;
import javax.sip.address.SipURI;
import javax.sip.address.URI;
import javax.sip.header.*;
import javax.sip.message.Request;
import java.lang.reflect.Field;
@@ -1487,11 +1489,20 @@
            Request request;
            if (dialog != null) {
                SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
                request = dialog.createRequest(Request.SUBSCRIBE);
                ExpiresHeader expiresHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForCatalog());
                request.setExpires(expiresHeader);
                request.setRequestURI(requestURI);
                ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
                request.setContent(subscribePostitionXml.toString(), contentTypeHeader);
                ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForMobilePosition());
                request.addHeader(expireHeader);
                CSeqHeader cSeqHeader = (CSeqHeader)request.getHeader(CSeqHeader.NAME);
                cSeqHeader.setSeqNumber(redisCatchStorage.getCSEQ(Request.SUBSCRIBE));
                request.removeHeader(CSeqHeader.NAME);
                request.addHeader(cSeqHeader);
            }else {
                String tm = Long.toString(System.currentTimeMillis());
                CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
@@ -1582,12 +1593,21 @@
            Request request;
            if (dialog != null) {
                SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress());
                request = dialog.createRequest(Request.SUBSCRIBE);
                ExpiresHeader expiresHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForCatalog());
                request.setExpires(expiresHeader);
                request.setRequestURI(requestURI);
                ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml");
                request.setContent(cmdXml.toString(), contentTypeHeader);
                CSeqHeader cSeqHeader = (CSeqHeader)request.getHeader(CSeqHeader.NAME);
                cSeqHeader.setSeqNumber(redisCatchStorage.getCSEQ(Request.SUBSCRIBE));
                request.removeHeader(CSeqHeader.NAME);
                request.addHeader(cSeqHeader);
            }else {
                String tm = Long.toString(System.currentTimeMillis());
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -82,7 +82,7 @@
    @Override
    public void process(RequestEvent evt) {
        Request request = evt.getRequest();
        System.out.println("收到订阅");
        try {
            Element rootElement = getRootElement(evt);
            String cmd = XmlUtil.getText(rootElement, "CmdType");
@@ -176,6 +176,8 @@
    }
    private void processNotifyCatalogList(RequestEvent evt, Element rootElement) throws SipException {
        System.out.println(evt.getRequest().toString());
        String platformId = SipUtils.getUserIdFromFromHeader(evt.getRequest());
        String deviceId = XmlUtil.getText(rootElement, "DeviceID");
        ParentPlatform platform = storager.queryParentPlatByServerGBId(platformId);