|
@@ -1,5 +1,7 @@
|
|
|
package com.wdkl.ncs.android.middleware.tcp;
|
|
|
|
|
|
+import android.util.Log;
|
|
|
+
|
|
|
import com.wdkl.ncs.android.middleware.common.Constant;
|
|
|
import com.wdkl.ncs.android.middleware.common.MessageEvent;
|
|
|
import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel;
|
|
@@ -21,6 +23,7 @@ import io.netty.util.ReferenceCountUtil;
|
|
|
|
|
|
@ChannelHandler.Sharable
|
|
|
public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
|
|
|
+ private static final String TAG = TcpClientHandler.class.getSimpleName();
|
|
|
ChannelHandlerContext ctx;
|
|
|
//重连间隔
|
|
|
private static Integer retrySeconds = 5;
|
|
@@ -35,7 +38,7 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
|
|
|
@Override
|
|
|
public void channelActive(ChannelHandlerContext ctx) throws Exception {
|
|
|
super.channelActive(ctx);
|
|
|
- System.out.println("连接成功");
|
|
|
+ Log.i(TAG, "连接成功");
|
|
|
this.ctx = ctx;
|
|
|
connected = true;
|
|
|
retryTimes = 0;
|
|
@@ -52,7 +55,7 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
|
|
|
EventBus.getDefault().post(new MessageEvent(0, Constant.EVENT_TCP_STATE));
|
|
|
connected = false;
|
|
|
Constant.TCP_CONNECTED = false;
|
|
|
- System.out.println("失去连接");
|
|
|
+ Log.i(TAG, "失去连接");
|
|
|
TcpClient.getInstance().doConnect();
|
|
|
//reConnect(ctx);
|
|
|
}
|
|
@@ -61,16 +64,17 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
|
|
|
@Override
|
|
|
protected void channelRead0(ChannelHandlerContext ctx, String source) throws Exception {
|
|
|
//System.out.println("channelRead0: read callback from server ===> " + source);
|
|
|
- TcpModel tcpModel = TcpModel.getModelByJson(source);
|
|
|
+ if(source.equals("1")){
|
|
|
+ Log.i(TAG,"收到服务器返回的心跳 "+source);
|
|
|
+ }else {
|
|
|
+ TcpModel tcpModel = TcpModel.getModelByJson(source);
|
|
|
|
|
|
- TcpModel responseTcpModel = null;
|
|
|
- if (tcpModel != null) {
|
|
|
- responseTcpModel = DeviceChannel.handleTcpReceived(tcpModel);
|
|
|
- }
|
|
|
- if (responseTcpModel != null) {
|
|
|
- ctx.writeAndFlush(responseTcpModel.toJson());
|
|
|
- } else {
|
|
|
- ReferenceCountUtil.release(source);
|
|
|
+ TcpModel responseTcpModel = DeviceChannel.handleTcpReceived(tcpModel);
|
|
|
+ if (responseTcpModel!=null){
|
|
|
+ ctx.writeAndFlush(responseTcpModel.toJson());
|
|
|
+ } else {
|
|
|
+ ReferenceCountUtil.release(source);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -83,6 +87,11 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
|
|
|
if (event.state()== IdleState.WRITER_IDLE){
|
|
|
ctx.writeAndFlush("0");
|
|
|
}
|
|
|
+ //读心跳包超时执行,关闭连接
|
|
|
+ else if (event.state() == IdleState.READER_IDLE){
|
|
|
+ Log.i(TAG,"TcpClientHandler ===> pong from server failed");
|
|
|
+ ctx.close();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|