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 | 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); | ... | ... |