From 83411ad1277f8d4dfbc95aff2f15900150e84db3 Mon Sep 17 00:00:00 2001
From: 64850858 <648540858@qq.com>
Date: 星期一, 07 六月 2021 15:11:53 +0800
Subject: [PATCH] 设备信息增加最近注册时间和最近心跳时间,心跳超时时间变为可配置
---
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java | 44 +++++++----
web_src/src/components/DeviceList.vue | 30 ++++---
src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java | 33 +++++--
src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java | 1
src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java | 6 +
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java | 4
src/main/resources/wvp.sqlite | 0
src/main/resources/all-application.yml | 4
src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java | 4
src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java | 5
src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java | 9 ++
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java | 13 +-
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java | 28 ++++--
sql/mysql.sql | 4
src/main/resources/application-dev.yml | 2
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 13 +-
16 files changed, 130 insertions(+), 70 deletions(-)
diff --git a/sql/mysql.sql b/sql/mysql.sql
index 3f3b876..71e651a 100644
--- a/sql/mysql.sql
+++ b/sql/mysql.sql
@@ -12,9 +12,11 @@
transport varchar(50) null,
streamMode varchar(50) null,
online varchar(50) null,
- registerTimeMillis int null,
+ registerTime varchar(50) null,
+ keepaliveTime varchar(50) null,
ip varchar(50) not null,
port int not null,
+ expires int not null,
hostAddress varchar(50) not null
);
diff --git a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
index 7b74990..2d92658 100644
--- a/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
+++ b/src/main/java/com/genersoft/iot/vmp/VManageBootstrap.java
@@ -23,4 +23,5 @@
VManageBootstrap.context = SpringApplication.run(VManageBootstrap.class, args);
}
+
}
diff --git a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
index 8af9956..6d8f45d 100644
--- a/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
+++ b/src/main/java/com/genersoft/iot/vmp/common/VideoManagerConstants.java
@@ -39,7 +39,9 @@
public static final String EVENT_ONLINE_REGISTER = "1";
public static final String EVENT_ONLINE_KEEPLIVE = "2";
-
+
+ public static final String EVENT_ONLINE_MESSAGE = "3";
+
public static final String EVENT_OUTLINE_UNREGISTER = "1";
public static final String EVENT_OUTLINE_TIMEOUT = "2";
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
index 32352c7..4fc28bc 100644
--- a/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
+++ b/src/main/java/com/genersoft/iot/vmp/conf/SipConfig.java
@@ -31,6 +31,9 @@
@Value("${sip.ptz.speed:50}")
Integer speed;
+ @Value("${sip.keepaliveTimeOut:180}")
+ Integer keepaliveTimeOut;
+
public String getMonitorIp() {
return monitorIp;
}
@@ -63,4 +66,7 @@
return speed;
}
+ public Integer getKeepaliveTimeOut() {
+ return keepaliveTimeOut;
+ }
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
index f587e75..a9185e0 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -66,18 +66,23 @@
/**
* 娉ㄥ唽鏃堕棿
*/
- private Long registerTimeMillis;
+ private String registerTime;
/**
* 蹇冭烦鏃堕棿
*/
- private Long KeepaliveTimeMillis;
+ private String keepaliveTime;
/**
* 閫氶亾涓暟
*/
private int channelCount;
+
+ /**
+ * 娉ㄥ唽鏈夋晥鏈�
+ */
+ private int expires;
public String getDeviceId() {
return deviceId;
@@ -175,19 +180,27 @@
this.channelCount = channelCount;
}
- public Long getRegisterTimeMillis() {
- return registerTimeMillis;
+ public String getRegisterTime() {
+ return registerTime;
}
- public void setRegisterTimeMillis(Long registerTimeMillis) {
- this.registerTimeMillis = registerTimeMillis;
+ public void setRegisterTime(String registerTime) {
+ this.registerTime = registerTime;
}
- public Long getKeepaliveTimeMillis() {
- return KeepaliveTimeMillis;
+ public String getKeepaliveTime() {
+ return keepaliveTime;
}
- public void setKeepaliveTimeMillis(Long keepaliveTimeMillis) {
- KeepaliveTimeMillis = keepaliveTimeMillis;
+ public void setKeepaliveTime(String keepaliveTime) {
+ this.keepaliveTime = keepaliveTime;
+ }
+
+ public int getExpires() {
+ return expires;
+ }
+
+ public void setExpires(int expires) {
+ this.expires = expires;
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
index 58b03dd..0422962 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/EventPublisher.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.event;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.event.platformKeepaliveExpire.PlatformKeepaliveExpireEvent;
import com.genersoft.iot.vmp.gb28181.event.platformNotRegister.PlatformNotRegisterEvent;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,9 +23,9 @@
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
- public void onlineEventPublish(String deviceId, String from) {
+ public void onlineEventPublish(Device device, String from) {
OnlineEvent onEvent = new OnlineEvent(this);
- onEvent.setDeviceId(deviceId);
+ onEvent.setDevice(device);
onEvent.setFrom(from);
applicationEventPublisher.publishEvent(onEvent);
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java
index e077cb9..1e01956 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEvent.java
@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.gb28181.event.online;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
import org.springframework.context.ApplicationEvent;
/**
@@ -18,18 +19,18 @@
super(source);
}
- private String deviceId;
+ private Device device;
private String from;
- public String getDeviceId() {
- return deviceId;
+ public Device getDevice() {
+ return device;
}
- public void setDeviceId(String deviceId) {
- this.deviceId = deviceId;
+ public void setDevice(Device device) {
+ this.device = device;
}
-
+
public String getFrom() {
return from;
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java
index b9bb5b1..acdf272 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java
@@ -1,5 +1,7 @@
package com.genersoft.iot.vmp.gb28181.event.online;
+import com.genersoft.iot.vmp.conf.SipConfig;
+import com.genersoft.iot.vmp.gb28181.bean.Device;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -9,6 +11,9 @@
import com.genersoft.iot.vmp.common.VideoManagerConstants;
import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
import com.genersoft.iot.vmp.utils.redis.RedisUtil;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
/**
* @Description: 鍦ㄧ嚎浜嬩欢鐩戝惉鍣紝鐩戝惉鍒扮绾垮悗锛屼慨鏀硅澶囩鍦ㄧ嚎鐘舵�併�� 璁惧鍦ㄧ嚎鏈変袱涓潵婧愶細
@@ -28,39 +33,46 @@
@Autowired
private RedisUtil redis;
+ @Autowired
+ private SipConfig sipConfig;
+
+ private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
@Override
public void onApplicationEvent(OnlineEvent event) {
if (logger.isDebugEnabled()) {
- logger.debug("璁惧涓婄嚎浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getDeviceId() + ",from:" + event.getFrom());
+ logger.debug("璁惧涓婄嚎浜嬩欢瑙﹀彂锛宒eviceId锛�" + event.getDevice().getDeviceId() + ",from:" + event.getFrom());
}
-
- String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + event.getDeviceId();
- boolean needUpdateStorager = false;
+ Device device = event.getDevice();
+ String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + event.getDevice().getDeviceId();
switch (event.getFrom()) {
// 娉ㄥ唽鏃惰Е鍙戠殑鍦ㄧ嚎浜嬩欢锛屽厛鍦╮edis涓鍔犺秴鏃惰秴鏃剁洃鍚�
case VideoManagerConstants.EVENT_ONLINE_REGISTER:
- // TODO 瓒呮椂鏃堕棿鏆傛椂鍐欐涓�180绉�
- redis.set(key, event.getDeviceId(), 180);
- needUpdateStorager = true;
+ // 瓒呮椂鏃堕棿
+ redis.set(key, event.getDevice().getDeviceId(), sipConfig.getKeepaliveTimeOut());
+ device.setRegisterTime(format.format(new Date(System.currentTimeMillis())));
break;
- // 璁惧涓诲姩鍙戦�佸績璺宠Е鍙戠殑绂荤嚎浜嬩欢
+ // 璁惧涓诲姩鍙戦�佸績璺宠Е鍙戠殑鍦ㄧ嚎浜嬩欢
case VideoManagerConstants.EVENT_ONLINE_KEEPLIVE:
boolean exist = redis.hasKey(key);
// 鍏堝垽鏂槸鍚﹁繕瀛樺湪锛屽綋璁惧鍏堝績璺宠秴鏃跺悗鍙堝彂閫佸績璺虫椂锛宺edis娌℃湁鐩戝惉锛岄渶瑕佸鍔�
if (!exist) {
- needUpdateStorager = true;
- redis.set(key, event.getDeviceId(), 180);
+ redis.set(key, event.getDevice().getDeviceId(), sipConfig.getKeepaliveTimeOut());
} else {
- redis.expire(key, 180);
+ redis.expire(key, sipConfig.getKeepaliveTimeOut());
}
+ device.setKeepaliveTime(format.format(new Date(System.currentTimeMillis())));
+ break;
+ // 璁惧涓诲姩鍙戦�佹秷鎭Е鍙戠殑鍦ㄧ嚎浜嬩欢
+ case VideoManagerConstants.EVENT_ONLINE_MESSAGE:
+
break;
}
-
- if (needUpdateStorager) {
- // 澶勭悊绂荤嚎鐩戝惉
- storager.online(event.getDeviceId());
- }
+
+ device.setOnline(1);
+ // 澶勭悊涓婄嚎鐩戝惉
+ storager.updateDevice(device);
}
}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
index 114ffd4..1842efe 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java
@@ -2,6 +2,7 @@
import java.io.ByteArrayInputStream;
import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.*;
import javax.sip.address.SipURI;
@@ -226,7 +227,7 @@
String name = rootElement.getName();
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getText();
-
+ Device device = storager.queryVideoDevice(deviceId);
if (name.equalsIgnoreCase("Query")) { // 鍖哄垎鏄疪esponse鈥斺�旀煡璇㈠搷搴旓紝杩樻槸Query鈥斺�旀煡璇㈣姹�
logger.info("鎺ユ敹鍒癉eviceStatus鏌ヨ娑堟伅");
FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
@@ -259,7 +260,7 @@
deferredResultHolder.invokeResult(msg);
if (offLineDetector.isOnline(deviceId)) {
- publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
} else {
}
}
@@ -452,6 +453,7 @@
String requestName = rootElement.getName();
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getTextTrim().toString();
+ Device device = storager.queryVideoDevice(deviceId);
if (requestName.equals("Query")) {
logger.info("鎺ユ敹鍒癉eviceInfo鏌ヨ娑堟伅");
FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME);
@@ -468,7 +470,6 @@
}
} else {
logger.debug("鎺ユ敹鍒癉eviceInfo搴旂瓟娑堟伅");
- Device device = storager.queryVideoDevice(deviceId);
if (device == null) {
return;
}
@@ -489,7 +490,7 @@
// 鍥炲200 OK
responseAck(evt);
if (offLineDetector.isOnline(deviceId)) {
- publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
}
}
} catch (DocumentException | SipException | InvalidArgumentException | ParseException e) {
@@ -669,7 +670,7 @@
// 鍥炲200 OK
responseAck(evt);
if (offLineDetector.isOnline(deviceId)) {
- publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
}
}
}
@@ -776,7 +777,7 @@
// 鍥炲200 OK
responseAck(evt);
if (offLineDetector.isOnline(deviceId)) {
- publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
} else {
}
}else {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java
index 897b6ab..2d669eb 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/NotifyRequestProcessor.java
@@ -216,13 +216,13 @@
Element rootElement = getRootElement(evt);
Element deviceIdElement = rootElement.element("DeviceID");
String deviceId = deviceIdElement.getText();
+ Device device = storager.queryVideoDevice(deviceId);
Element deviceListElement = rootElement.element("DeviceList");
if (deviceListElement == null) {
return;
}
Iterator<Element> deviceListIterator = deviceListElement.elementIterator();
if (deviceListIterator != null) {
- Device device = storager.queryVideoDevice(deviceId);
if (device == null) {
return;
}
@@ -324,7 +324,7 @@
// 鍥炲200 OK
response200Ok(evt);
if (offLineDetector.isOnline(deviceId)) {
- publisher.onlineEventPublish(deviceId, VideoManagerConstants.EVENT_ONLINE_KEEPLIVE);
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_MESSAGE);
}
}
} catch (DocumentException | SipException | InvalidArgumentException | ParseException e) {
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
index 574f9c7..64be7ef 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/RegisterRequestProcessor.java
@@ -2,7 +2,10 @@
import java.security.NoSuchAlgorithmException;
import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
import java.util.Calendar;
+import java.util.Date;
import java.util.Locale;
import javax.sip.InvalidArgumentException;
@@ -70,7 +73,11 @@
boolean passwordCorrect = false;
// 娉ㄥ唽鏍囧織 0锛氭湭鎼哄甫鎺堟潈澶存垨鑰呭瘑鐮侀敊璇� 1锛氭敞鍐屾垚鍔� 2锛氭敞閿�鎴愬姛
int registerFlag = 0;
- Device device = null;
+ FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
+ AddressImpl address = (AddressImpl) fromHeader.getAddress();
+ SipUri uri = (SipUri) address.getURI();
+ String deviceId = uri.getUser();
+ Device device = storager.queryVideoDevice(deviceId);
AuthorizationHeader authorhead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
// 鏍¢獙瀵嗙爜鏄惁姝g‘
if (authorhead != null) {
@@ -103,13 +110,17 @@
response.addHeader(dateHeader);
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
+ if (expiresHeader == null) {
+ response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
+ getServerTransaction(evt).sendResponse(response);
+ return;
+ }
// 娣诲姞Contact澶�
response.addHeader(request.getHeader(ContactHeader.NAME));
// 娣诲姞Expires澶�
response.addHeader(request.getExpires());
// 鑾峰彇鍒伴�氫俊鍦板潃绛変俊鎭�
- FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
String received = viaHeader.getReceived();
int rPort = viaHeader.getRPort();
@@ -119,10 +130,7 @@
rPort = viaHeader.getPort();
}
//
- AddressImpl address = (AddressImpl) fromHeader.getAddress();
- SipUri uri = (SipUri) address.getURI();
- String deviceId = uri.getUser();
- device = storager.queryVideoDevice(deviceId);
+
if (device == null) {
device = new Device();
device.setStreamMode("UDP");
@@ -132,11 +140,12 @@
device.setPort(rPort);
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
// 娉ㄩ攢鎴愬姛
- if (expiresHeader != null && expiresHeader.getExpires() == 0) {
+ if (expiresHeader.getExpires() == 0) {
registerFlag = 2;
}
// 娉ㄥ唽鎴愬姛
else {
+ device.setExpires(expiresHeader.getExpires());
registerFlag = 1;
// 鍒ゆ柇TCP杩樻槸UDP
boolean isTcp = false;
@@ -154,10 +163,7 @@
// 涓嬪彂catelog鏌ヨ鐩綍
if (registerFlag == 1 ) {
logger.info("[{}] 娉ㄥ唽鎴愬姛! deviceId:" + device.getDeviceId(), requestAddress);
- device.setRegisterTimeMillis(System.currentTimeMillis());
- storager.updateDevice(device);
- publisher.onlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_ONLINE_REGISTER);
-
+ publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_REGISTER);
// 閲嶆柊娉ㄥ唽鏇存柊璁惧鍜岄�氶亾锛屼互鍏嶈澶囨浛鎹㈡垨鏇存柊鍚庝俊鎭棤娉曟洿鏂�
handler.onRegister(device);
} else if (registerFlag == 2) {
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
index bcc33de..d597f35 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
@@ -27,6 +27,9 @@
"ip," +
"port," +
"hostAddress," +
+ "expires," +
+ "registerTime," +
+ "keepaliveTime," +
"online" +
") VALUES (" +
"#{deviceId}," +
@@ -39,6 +42,9 @@
"#{ip}," +
"#{port}," +
"#{hostAddress}," +
+ "#{expires}," +
+ "#{registerTime}," +
+ "#{keepaliveTime}," +
"#{online}" +
")")
int add(Device device);
@@ -56,6 +62,9 @@
"<if test=\"port != null\">, port=${port}</if>" +
"<if test=\"hostAddress != null\">, hostAddress='${hostAddress}'</if>" +
"<if test=\"online != null\">, online=${online}</if>" +
+ "<if test=\"registerTime != null\">, registerTime='${registerTime}'</if>" +
+ "<if test=\"keepaliveTime != null\">, keepaliveTime='${keepaliveTime}'</if>" +
+ "<if test=\"expires != null\">, expires=${expires}</if>" +
"WHERE deviceId='${deviceId}'"+
" </script>"})
int update(Device device);
diff --git a/src/main/resources/all-application.yml b/src/main/resources/all-application.yml
index 10667be..6923d97 100644
--- a/src/main/resources/all-application.yml
+++ b/src/main/resources/all-application.yml
@@ -63,8 +63,10 @@
domain: 4401020049
# [鍙�塢
id: 44010200492000000001
- # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�
+ # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�, 绉婚櫎瀵嗙爜灏嗕笉杩涜鏍¢獙
password: admin123
+ # [鍙�塢 蹇冭烦瓒呮椂鏃堕棿锛� 寤鸿璁剧疆涓哄績璺冲懆鏈熺殑涓夊��
+ keepaliveTimeOut: 180
#zlm鏈嶅姟鍣ㄩ厤缃�
media:
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index b494769..b70bce4 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -39,7 +39,7 @@
domain: 4401020049
# [鍙�塢
id: 44010200492000000001
- # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�
+ # [鍙�塢 榛樿璁惧璁よ瘉瀵嗙爜锛屽悗缁墿灞曚娇鐢ㄨ澶囧崟鐙瘑鐮�, 绉婚櫎瀵嗙爜灏嗕笉杩涜鏍¢獙
password: admin123
#zlm鏈嶅姟鍣ㄩ厤缃�
diff --git a/src/main/resources/wvp.sqlite b/src/main/resources/wvp.sqlite
index 5def77b..3131c0f 100644
--- a/src/main/resources/wvp.sqlite
+++ b/src/main/resources/wvp.sqlite
Binary files differ
diff --git a/web_src/src/components/DeviceList.vue b/web_src/src/components/DeviceList.vue
index 38a063e..e05855f 100644
--- a/web_src/src/components/DeviceList.vue
+++ b/web_src/src/components/DeviceList.vue
@@ -14,22 +14,16 @@
<!-- <devicePlayer ref="devicePlayer"></devicePlayer> -->
<!--璁惧鍒楄〃-->
<el-table :data="deviceList" border style="width: 100%" :height="winHeight">
- <el-table-column prop="name" label="鍚嶇О" width="180" align="center">
+ <el-table-column prop="name" label="鍚嶇О" align="center">
</el-table-column>
- <el-table-column prop="deviceId" label="璁惧缂栧彿" width="240" align="center">
+ <el-table-column prop="deviceId" label="璁惧缂栧彿" width="180" align="center">
</el-table-column>
- <el-table-column label="鍦板潃" width="180" align="center">
- <template slot-scope="scope">
- <div slot="reference" class="name-wrapper">
- <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag>
- </div>
- </template>
- </el-table-column>
+
<el-table-column prop="manufacturer" label="鍘傚" align="center">
</el-table-column>
- <el-table-column prop="model" label="鍥轰欢鐗堟湰" align="center">
+ <el-table-column prop="model" label="鍥轰欢鐗堟湰" align="center" width="120">
</el-table-column>
- <el-table-column label="娴佷紶杈撴ā寮�" align="center" width="160">
+ <el-table-column label="娴佷紶杈撴ā寮�" align="center" width="120">
<template slot-scope="scope">
<el-select size="mini" @change="transportChange(scope.row)" v-model="scope.row.streamMode" placeholder="璇烽�夋嫨">
<el-option key="UDP" label="UDP" value="UDP"></el-option>
@@ -40,7 +34,7 @@
</el-table-column>
<el-table-column prop="channelCount" label="閫氶亾鏁�" align="center">
</el-table-column>
- <el-table-column label="鐘舵��" width="80" align="center">
+ <el-table-column label="鐘舵��" width="120" align="center">
<template slot-scope="scope">
<div slot="reference" class="name-wrapper">
<el-tag size="medium" v-if="scope.row.online == 1">鍦ㄧ嚎</el-tag>
@@ -48,7 +42,17 @@
</div>
</template>
</el-table-column>
-
+ <el-table-column prop="keepaliveTime" label="鏈�杩戝績璺�" align="center" width="140">
+ </el-table-column>
+ <el-table-column prop="registerTime" label="鏈�杩戞敞鍐�" align="center" width="140">
+ </el-table-column>
+ <el-table-column label="鍦板潃" width="180" align="center">
+ <template slot-scope="scope">
+ <div slot="reference" class="name-wrapper">
+ <el-tag size="medium">{{ scope.row.hostAddress }}</el-tag>
+ </div>
+ </template>
+ </el-table-column>
<el-table-column label="鎿嶄綔" width="360" align="center" fixed="right">
<template slot-scope="scope">
<el-button size="mini" :ref="scope.row.deviceId + 'refbtn' " v-if="scope.row.online!=0" icon="el-icon-refresh" @click="refDevice(scope.row)">鍒锋柊</el-button>
--
Gitblit v1.8.0