Commit 973e75f80819c18375673bd7459c02898d418a6b

Authored by 648540858
1 parent 1e75b256

优化收到心跳的信息更新判断

src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/KeepaliveNotifyMessageHandler.java
... ... @@ -49,28 +49,28 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp
49 49 return;
50 50 }
51 51 try {
  52 + // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息
  53 + // 获取到通信地址等信息
  54 + ViaHeader viaHeader = (ViaHeader) evt.getRequest().getHeader(ViaHeader.NAME);
  55 + String received = viaHeader.getReceived();
  56 + int rPort = viaHeader.getRPort();
  57 + // 解析本地地址替代
  58 + if (StringUtils.isEmpty(received) || rPort == -1) {
  59 + received = viaHeader.getHost();
  60 + rPort = viaHeader.getPort();
  61 + }
  62 + if (device.getPort() != rPort) {
  63 + device.setPort(rPort);
  64 + device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
  65 + }
  66 + device.setKeepaliveTime(DateUtil.getNow());
52 67 if (device.getOnline() == 1) {
53 68 // 回复200 OK
54 69 responseAck(evt, Response.OK);
  70 + deviceService.updateDevice(device);
55 71 }else {
56 72 // 对于已经离线的设备判断他的注册是否已经过期
57 73 if (!deviceService.expire(device)){
58   - device.setKeepaliveTime(DateUtil.getNow());
59   - // 判断RPort是否改变,改变则说明路由nat信息变化,修改设备信息
60   - // 获取到通信地址等信息
61   - ViaHeader viaHeader = (ViaHeader) evt.getRequest().getHeader(ViaHeader.NAME);
62   - String received = viaHeader.getReceived();
63   - int rPort = viaHeader.getRPort();
64   - // 解析本地地址替代
65   - if (StringUtils.isEmpty(received) || rPort == -1) {
66   - received = viaHeader.getHost();
67   - rPort = viaHeader.getPort();
68   - }
69   - if (device.getPort() != rPort) {
70   - device.setPort(rPort);
71   - device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
72   - }
73   - device.setKeepaliveTime(DateUtil.getNow());
74 74 deviceService.online(device);
75 75 // 回复200 OK
76 76 responseAck(evt, Response.OK);
... ...