feat: 增加104客户端服务和断线重连机制
parent
fccb856cb6
commit
5f967278f5
@ -0,0 +1,60 @@
|
||||
package com.xydl.cac.iec104;
|
||||
|
||||
|
||||
import com.xydl.cac.exception.BusinessException;
|
||||
import com.xydl.cac.model.StaticVariable;
|
||||
import com.xydl.cac.socket.WebSocketServer;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
public class RealTime104DataService {
|
||||
@Resource
|
||||
WebSocketServer webSocketServer;
|
||||
|
||||
public static boolean inDoing = false;
|
||||
|
||||
@PostConstruct
|
||||
private void init() {
|
||||
try {
|
||||
// this.startCollect("192.168.1.177");
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
}
|
||||
|
||||
public void startCollect(String ip) throws BusinessException {
|
||||
inDoing = true;
|
||||
try {
|
||||
Iec104Client client = new Iec104Client(webSocketServer);
|
||||
client.connect(ip, 2404);
|
||||
client.keep = true;
|
||||
} catch (Exception ex) {
|
||||
String err = "IEC104客户端连接异常, ip=" + ip;
|
||||
log.error(err, ex);
|
||||
throw new BusinessException(err);
|
||||
} finally {
|
||||
inDoing = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void stopCollect() {
|
||||
if (StaticVariable.realTime104Client != null) {
|
||||
StaticVariable.realTime104Client.keep = false;
|
||||
StaticVariable.realTime104Client.disconnect();
|
||||
StaticVariable.realTime104Client = null;
|
||||
}
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
private void stop() {
|
||||
log.info("关闭IEC104客户端.");
|
||||
StaticVariable.shutdown = 1;
|
||||
this.stopCollect();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue