package com.mes.netty; import com.mes.ui.MesClient; import com.mes.ui.MesRevice; import com.mes.util.HttpUtils; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.text.SimpleDateFormat; import java.util.Date; public class NettyClientHandler extends ChannelInboundHandlerAdapter { public static final Logger log = LoggerFactory.getLogger(NettyClientHandler.class); private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static byte[] responseByte; @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { log.info("mes connecting:" + sdf.format(new Date())); } @Override public void handlerRemoved(ChannelHandlerContext ctx) throws Exception { Channel channel = ctx.channel(); log.error("close tcp, ip:" + channel.remoteAddress()); MesClient.tcp_connect_flag = false; MesClient.setTcpStatus(); // 关闭通道 channel.close(); } @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { log.info("msg:"+msg); String mes_msg = formatResult(msg.toString()); if(mes_msg == null || mes_msg.isEmpty()){ // error msg return; } String msg_type = ProtocolParam.getMsgType(mes_msg); log.info("msg_type="+msg_type); String processMsgRet = MesMsgUtils.processMsg(mes_msg, msg_type); log.info("processMsgRet="+processMsgRet); switch(msg_type) { case "AQDW": // 查询质量 MesRevice.checkQualityRevice(processMsgRet,mes_msg); break; case "MKSW": MesRevice.startRevice(processMsgRet,mes_msg); break; case "MBDW": MesRevice.bindRevice(processMsgRet,mes_msg); break; case "MJBW": MesRevice.unbindRevice(processMsgRet,mes_msg); break; case "MQDW": MesRevice.updateResultRevice(processMsgRet,mes_msg); break; } } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { ctx.close(); } private String formatResult(String msg){ log.error("length:" + msg.length() + " content:" + msg); String msgType = msg.substring(0,2).trim(); if(msgType.equals("OK")){ return msg.substring(3,msg.length()); }else{ return ""; } } }