diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java index 4c6212257..ac25d112d 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/codec/netty/TcpServer.java @@ -3,6 +3,7 @@ package com.genersoft.iot.vmp.jt1078.codec.netty; import com.genersoft.iot.vmp.jt1078.codec.decode.Jt808Decoder; import com.genersoft.iot.vmp.jt1078.codec.encode.Jt808Encoder; import com.genersoft.iot.vmp.jt1078.codec.encode.Jt808EncoderCmd; +import com.genersoft.iot.vmp.jt1078.config.JT1078Config; import com.genersoft.iot.vmp.jt1078.proc.factory.CodecFactory; import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service; import io.netty.bootstrap.ServerBootstrap; @@ -38,13 +39,15 @@ public class TcpServer { private EventLoopGroup workerGroup = null; private ApplicationEventPublisher applicationEventPublisher = null; private Ijt1078Service service = null; + private final JT1078Config jt1078Config; private final ByteBuf DECODER_JT808 = Unpooled.wrappedBuffer(new byte[]{0x7e}); - public TcpServer(Integer port, ApplicationEventPublisher applicationEventPublisher, Ijt1078Service service) { + public TcpServer(Integer port, ApplicationEventPublisher applicationEventPublisher, Ijt1078Service service, JT1078Config jt1078Config) { this.port = port; this.applicationEventPublisher = applicationEventPublisher; this.service = service; + this.jt1078Config = jt1078Config; } private void startTcpServer() { @@ -63,7 +66,7 @@ public class TcpServer { @Override public void initChannel(NioSocketChannel channel) { channel.pipeline() - .addLast(new IdleStateHandler(10, 0, 0, TimeUnit.MINUTES)) + .addLast(new IdleStateHandler(jt1078Config.getReaderIdleTime(), 0, 0, TimeUnit.MINUTES)) .addLast(new DelimiterBasedFrameDecoder(1024 * 2, DECODER_JT808)) .addLast(new Jt808Decoder(applicationEventPublisher, service)) .addLast(new Jt808Encoder()) diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078AutoConfiguration.java b/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078AutoConfiguration.java index 507a05a1d..649d84836 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078AutoConfiguration.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078AutoConfiguration.java @@ -26,8 +26,11 @@ public class JT1078AutoConfiguration { @Autowired private Ijt1078Service service; + @Autowired + private JT1078Config jt1078Config; + @Bean(initMethod = "start", destroyMethod = "stop") public TcpServer jt1078Server(@Value("${jt1078.port}") Integer port) { - return new TcpServer(port, applicationEventPublisher, service); + return new TcpServer(port, applicationEventPublisher, service, jt1078Config); } } diff --git a/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078Config.java b/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078Config.java index fba25a7c9..5e779fc14 100644 --- a/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078Config.java +++ b/src/main/java/com/genersoft/iot/vmp/jt1078/config/JT1078Config.java @@ -17,4 +17,9 @@ public class JT1078Config { private String password; private Boolean record = false; + + /** + * IdleStateHandler reader idle timeout, unit: minutes + */ + private Integer readerIdleTime = 15; } diff --git a/src/test/java/com/genersoft/iot/vmp/jt1078/JT1078ServerTest.java b/src/test/java/com/genersoft/iot/vmp/jt1078/JT1078ServerTest.java index 2a48961bf..9d875f423 100644 --- a/src/test/java/com/genersoft/iot/vmp/jt1078/JT1078ServerTest.java +++ b/src/test/java/com/genersoft/iot/vmp/jt1078/JT1078ServerTest.java @@ -20,7 +20,7 @@ public class JT1078ServerTest { public static void main(String[] args) { System.out.println("Starting jt1078 server..."); - TcpServer tcpServer = new TcpServer(21078, null, null); + TcpServer tcpServer = new TcpServer(21078, null, null, null); tcpServer.start(); System.out.println("Start jt1078 server success!");