Commit 973e75f80819c18375673bd7459c02898d418a6b
1 parent
1e75b256
优化收到心跳的信息更新判断
Showing
1 changed file
with
16 additions
and
16 deletions
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,28 +49,28 @@ public class KeepaliveNotifyMessageHandler extends SIPRequestProcessorParent imp | ||
| 49 | return; | 49 | return; |
| 50 | } | 50 | } |
| 51 | try { | 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 | if (device.getOnline() == 1) { | 67 | if (device.getOnline() == 1) { |
| 53 | // 回复200 OK | 68 | // 回复200 OK |
| 54 | responseAck(evt, Response.OK); | 69 | responseAck(evt, Response.OK); |
| 70 | + deviceService.updateDevice(device); | ||
| 55 | }else { | 71 | }else { |
| 56 | // 对于已经离线的设备判断他的注册是否已经过期 | 72 | // 对于已经离线的设备判断他的注册是否已经过期 |
| 57 | if (!deviceService.expire(device)){ | 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 | deviceService.online(device); | 74 | deviceService.online(device); |
| 75 | // 回复200 OK | 75 | // 回复200 OK |
| 76 | responseAck(evt, Response.OK); | 76 | responseAck(evt, Response.OK); |