Commit d3e815bf16541884cf998bda9ae7bcd5b29b87e2
1 parent
5df95ba8
修复订阅超时
Showing
2 changed files
with
25 additions
and
3 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
| ... | ... | @@ -32,7 +32,9 @@ import org.springframework.stereotype.Component; |
| 32 | 32 | import org.springframework.util.StringUtils; |
| 33 | 33 | |
| 34 | 34 | import javax.sip.*; |
| 35 | +import javax.sip.address.Address; | |
| 35 | 36 | import javax.sip.address.SipURI; |
| 37 | +import javax.sip.address.URI; | |
| 36 | 38 | import javax.sip.header.*; |
| 37 | 39 | import javax.sip.message.Request; |
| 38 | 40 | import java.lang.reflect.Field; |
| ... | ... | @@ -1487,11 +1489,20 @@ public class SIPCommander implements ISIPCommander { |
| 1487 | 1489 | |
| 1488 | 1490 | Request request; |
| 1489 | 1491 | if (dialog != null) { |
| 1492 | + SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); | |
| 1490 | 1493 | request = dialog.createRequest(Request.SUBSCRIBE); |
| 1494 | + ExpiresHeader expiresHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForCatalog()); | |
| 1495 | + request.setExpires(expiresHeader); | |
| 1496 | + | |
| 1497 | + request.setRequestURI(requestURI); | |
| 1498 | + | |
| 1491 | 1499 | ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); |
| 1492 | 1500 | request.setContent(subscribePostitionXml.toString(), contentTypeHeader); |
| 1493 | - ExpiresHeader expireHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForMobilePosition()); | |
| 1494 | - request.addHeader(expireHeader); | |
| 1501 | + | |
| 1502 | + CSeqHeader cSeqHeader = (CSeqHeader)request.getHeader(CSeqHeader.NAME); | |
| 1503 | + cSeqHeader.setSeqNumber(redisCatchStorage.getCSEQ(Request.SUBSCRIBE)); | |
| 1504 | + request.removeHeader(CSeqHeader.NAME); | |
| 1505 | + request.addHeader(cSeqHeader); | |
| 1495 | 1506 | }else { |
| 1496 | 1507 | String tm = Long.toString(System.currentTimeMillis()); |
| 1497 | 1508 | CallIdHeader callIdHeader = device.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId() |
| ... | ... | @@ -1582,12 +1593,21 @@ public class SIPCommander implements ISIPCommander { |
| 1582 | 1593 | |
| 1583 | 1594 | Request request; |
| 1584 | 1595 | if (dialog != null) { |
| 1596 | + SipURI requestURI = sipFactory.createAddressFactory().createSipURI(device.getDeviceId(), device.getHostAddress()); | |
| 1585 | 1597 | request = dialog.createRequest(Request.SUBSCRIBE); |
| 1586 | 1598 | ExpiresHeader expiresHeader = sipFactory.createHeaderFactory().createExpiresHeader(device.getSubscribeCycleForCatalog()); |
| 1587 | 1599 | request.setExpires(expiresHeader); |
| 1588 | 1600 | |
| 1601 | + request.setRequestURI(requestURI); | |
| 1602 | + | |
| 1589 | 1603 | ContentTypeHeader contentTypeHeader = sipFactory.createHeaderFactory().createContentTypeHeader("Application", "MANSCDP+xml"); |
| 1590 | 1604 | request.setContent(cmdXml.toString(), contentTypeHeader); |
| 1605 | + | |
| 1606 | + CSeqHeader cSeqHeader = (CSeqHeader)request.getHeader(CSeqHeader.NAME); | |
| 1607 | + cSeqHeader.setSeqNumber(redisCatchStorage.getCSEQ(Request.SUBSCRIBE)); | |
| 1608 | + request.removeHeader(CSeqHeader.NAME); | |
| 1609 | + request.addHeader(cSeqHeader); | |
| 1610 | + | |
| 1591 | 1611 | }else { |
| 1592 | 1612 | String tm = Long.toString(System.currentTimeMillis()); |
| 1593 | 1613 | ... | ... |
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
| ... | ... | @@ -82,7 +82,7 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme |
| 82 | 82 | @Override |
| 83 | 83 | public void process(RequestEvent evt) { |
| 84 | 84 | Request request = evt.getRequest(); |
| 85 | - | |
| 85 | + System.out.println("收到订阅"); | |
| 86 | 86 | try { |
| 87 | 87 | Element rootElement = getRootElement(evt); |
| 88 | 88 | String cmd = XmlUtil.getText(rootElement, "CmdType"); |
| ... | ... | @@ -176,6 +176,8 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme |
| 176 | 176 | } |
| 177 | 177 | |
| 178 | 178 | private void processNotifyCatalogList(RequestEvent evt, Element rootElement) throws SipException { |
| 179 | + | |
| 180 | + System.out.println(evt.getRequest().toString()); | |
| 179 | 181 | String platformId = SipUtils.getUserIdFromFromHeader(evt.getRequest()); |
| 180 | 182 | String deviceId = XmlUtil.getText(rootElement, "DeviceID"); |
| 181 | 183 | ParentPlatform platform = storager.queryParentPlatByServerGBId(platformId); | ... | ... |