mirror of
https://gitee.com/pan648540858/wvp-GB28181-pro.git
synced 2026-05-17 02:57:50 +08:00
1078-修复断开连接时设备未下线的BUG
This commit is contained in:
parent
7ffe773175
commit
dbb2492640
@ -1,8 +1,10 @@
|
||||
package com.genersoft.iot.vmp.jt1078.cmd;
|
||||
|
||||
import com.genersoft.iot.vmp.conf.exception.ControllerException;
|
||||
import com.genersoft.iot.vmp.jt1078.proc.entity.Cmd;
|
||||
import com.genersoft.iot.vmp.jt1078.proc.response.*;
|
||||
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
|
||||
import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Random;
|
||||
@ -73,6 +75,12 @@ public class JT1078Template {
|
||||
private static final String H1003 = "1003";
|
||||
private static final String H1205 = "1205";
|
||||
|
||||
public void checkTerminalStatus(String devId){
|
||||
if (SessionManager.INSTANCE.get(devId) == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "终端不在线");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启直播视频
|
||||
*
|
||||
@ -80,6 +88,7 @@ public class JT1078Template {
|
||||
* @param j9101 开启视频参数
|
||||
*/
|
||||
public Object startLive(String devId, J9101 j9101, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -97,6 +106,7 @@ public class JT1078Template {
|
||||
* @param j9102 关闭视频参数
|
||||
*/
|
||||
public Object stopLive(String devId, J9102 j9102, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -114,6 +124,7 @@ public class JT1078Template {
|
||||
* @param j9205 查询音视频列表
|
||||
*/
|
||||
public Object queryBackTime(String devId, J9205 j9205, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -131,6 +142,7 @@ public class JT1078Template {
|
||||
* @param j9201 视频回放参数
|
||||
*/
|
||||
public Object startBackLive(String devId, J9201 j9201, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -148,6 +160,7 @@ public class JT1078Template {
|
||||
* @param j9202 控制视频回放参数
|
||||
*/
|
||||
public Object controlBackLive(String devId, J9202 j9202, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -165,6 +178,7 @@ public class JT1078Template {
|
||||
* @param j9206 文件上传参数
|
||||
*/
|
||||
public Object fileUpload(String devId, J9206 j9206, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -182,6 +196,7 @@ public class JT1078Template {
|
||||
* @param j9207 文件上传控制参数
|
||||
*/
|
||||
public Object fileUploadControl(String devId, J9207 j9207, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -199,6 +214,7 @@ public class JT1078Template {
|
||||
* @param j9301 云台旋转参数
|
||||
*/
|
||||
public Object ptzRotate(String devId, J9301 j9301, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -216,6 +232,7 @@ public class JT1078Template {
|
||||
* @param j9302 云台焦距控制参数
|
||||
*/
|
||||
public Object ptzFocal(String devId, J9302 j9302, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -233,6 +250,7 @@ public class JT1078Template {
|
||||
* @param j9303 云台光圈控制参数
|
||||
*/
|
||||
public Object ptzIris(String devId, J9303 j9303, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -250,6 +268,7 @@ public class JT1078Template {
|
||||
* @param j9304 云台雨刷控制参数
|
||||
*/
|
||||
public Object ptzWiper(String devId, J9304 j9304, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -267,6 +286,7 @@ public class JT1078Template {
|
||||
* @param j9305 云台红外补光控制参数
|
||||
*/
|
||||
public Object ptzSupplementaryLight(String devId, J9305 j9305, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -284,6 +304,7 @@ public class JT1078Template {
|
||||
* @param j9306 云台变倍控制参数
|
||||
*/
|
||||
public Object ptzZoom(String devId, J9306 j9306, Integer timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -300,7 +321,7 @@ public class JT1078Template {
|
||||
* @param devId 设备号
|
||||
*/
|
||||
public Object getDeviceConfig(String devId, J8104 j8104, Integer timeOut) {
|
||||
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -317,7 +338,7 @@ public class JT1078Template {
|
||||
* @param devId 设备号
|
||||
*/
|
||||
public Object getDeviceSpecifyConfig(String devId, J8106 j8106, Integer timeOut) {
|
||||
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -334,7 +355,7 @@ public class JT1078Template {
|
||||
* @param devId 设备号
|
||||
*/
|
||||
public Object setDeviceSpecifyConfig(String devId, J8103 j8103, Integer timeOut) {
|
||||
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -353,6 +374,7 @@ public class JT1078Template {
|
||||
* 设备控制
|
||||
*/
|
||||
public Object deviceControl(String devId, J8105 j8105, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -367,6 +389,7 @@ public class JT1078Template {
|
||||
* 查询终端属性
|
||||
*/
|
||||
public Object deviceAttribute(String devId, J8107 j8107, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -381,6 +404,7 @@ public class JT1078Template {
|
||||
* 位置信息查询
|
||||
*/
|
||||
public Object queryPositionInfo(String devId, J8201 j8201, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -392,6 +416,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object tempPositionTrackingControl(String devId, J8202 j8202, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -403,6 +428,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object confirmationAlarmMessage(String devId, J8203 j8203, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -414,6 +440,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object linkDetection(String devId, J8204 j8204, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -425,6 +452,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object textMessage(String devId, J8300 j8300, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -436,6 +464,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object telephoneCallback(String devId, J8400 j8400, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -447,6 +476,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object setPhoneBook(String devId, J8401 j8401, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -458,6 +488,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object vehicleControl(String devId, J8500 j8500, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -469,6 +500,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object setAreaForCircle(String devId, J8600 j8600, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -480,6 +512,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object deleteAreaForCircle(String devId, J8601 j8601, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -491,6 +524,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object setAreaForRectangle(String devId, J8602 j8602, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -502,6 +536,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object deleteAreaForRectangle(String devId, J8603 j8603, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -513,6 +548,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object setAreaForPolygon(String devId, J8604 j8604, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -524,6 +560,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object deleteAreaForPolygon(String devId, J8605 j8605, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -535,6 +572,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object setRoute(String devId, J8606 j8606, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -546,6 +584,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object deleteRoute(String devId, J8607 j8607, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -557,6 +596,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object queryAreaOrRoute(String devId, J8608 j8608, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -568,6 +608,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object queryDriverInformation(String devId, J8702 j8702, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -579,6 +620,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object shooting(String devId, J8801 j8801, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -590,6 +632,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object queryMediaData(String devId, J8802 j8802, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -601,6 +644,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object uploadMediaData(String devId, J8803 j8803, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -612,6 +656,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object record(String devId, J8804 j8804, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -623,6 +668,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object uploadMediaDataForSingle(String devId, J8805 j8805, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
@ -634,6 +680,7 @@ public class JT1078Template {
|
||||
}
|
||||
|
||||
public Object queryMediaAttribute(String devId, J9003 j9003, int timeOut) {
|
||||
checkTerminalStatus(devId);
|
||||
Cmd cmd = new Cmd.Builder()
|
||||
.setPhoneNumber(devId)
|
||||
.setPackageNo(randomInt())
|
||||
|
||||
@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.jt1078.event.ConnectChangeEvent;
|
||||
import com.genersoft.iot.vmp.jt1078.event.RegisterEvent;
|
||||
import com.genersoft.iot.vmp.jt1078.proc.request.J0003;
|
||||
import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
|
||||
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -25,6 +26,9 @@ public class ConnectChangeEventListener implements ApplicationListener<ConnectCh
|
||||
log.info("[JT-设备已连接] 终端ID: {}", event.getPhoneNumber());
|
||||
}else{
|
||||
log.info("[JT-设备连接已断开] 终端ID: {}", event.getPhoneNumber());
|
||||
if(SessionManager.INSTANCE.get(event.getPhoneNumber()) != null) {
|
||||
SessionManager.INSTANCE.get(event.getPhoneNumber()).unregister();
|
||||
}
|
||||
}
|
||||
JTDevice device = service.getDevice(event.getPhoneNumber());
|
||||
if (device != null) {
|
||||
|
||||
@ -141,9 +141,6 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
||||
if (device == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "设备不存在");
|
||||
}
|
||||
if (SessionManager.INSTANCE.get(phoneNumber) == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "设备离线");
|
||||
}
|
||||
// 检查流是否已经存在,存在则返回
|
||||
String playKey = VideoManagerConstants.INVITE_INFO_1078_PLAY + phoneNumber + ":" + channelId;
|
||||
List<GeneralCallback<StreamInfo>> errorCallbacks = inviteErrorCallbackMap.computeIfAbsent(playKey, k -> new ArrayList<>());
|
||||
@ -236,6 +233,7 @@ public class jt1078ServiceImpl implements Ijt1078Service {
|
||||
if (streamInfo != null) {
|
||||
// 关闭rtpServer
|
||||
mediaServerService.closeRTPServer(streamInfo.getMediaServerId(), streamInfo.getStream());
|
||||
redisTemplate.delete(playKey);
|
||||
}
|
||||
// 清理回调
|
||||
List<GeneralCallback<StreamInfo>> generalCallbacks = inviteErrorCallbackMap.get(playKey);
|
||||
|
||||
@ -59,6 +59,7 @@ public enum SessionManager {
|
||||
*/
|
||||
protected void put(Object clientId, Session newSession) {
|
||||
sessionMap.put(clientId, newSession);
|
||||
System.out.println(sessionMap.size());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -261,9 +261,10 @@ export default {
|
||||
var that = this;
|
||||
this.$axios({
|
||||
method: 'get',
|
||||
url: '/api/play/stop/' + this.deviceId + "/" + itemData.channelId,
|
||||
url: '/api/jt1078/live/stop',
|
||||
params: {
|
||||
isSubStream: this.isSubStream
|
||||
phoneNumber: this.device.phoneNumber,
|
||||
channelId: itemData.channelId,
|
||||
}
|
||||
}).then(function (res) {
|
||||
that.initData();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user