package com.thhy.screen.modules.biz.agv.controller; import com.alibaba.fastjson.JSON; import com.thhy.general.common.BasicResult; import com.thhy.general.common.enums.ProListenType; import com.thhy.screen.modules.biz.agv.entity.AgvStateHistory; import com.thhy.screen.modules.biz.agv.mapper.AgvStateHistoryMapper; import com.thhy.screen.modules.biz.bigscreen.controller.ProListenSocketServer; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.websocket.Session; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.CopyOnWriteArraySet; public class NettyServerHandler extends ChannelInboundHandlerAdapter { private AgvStateHistoryMapper historyMapper; public NettyServerHandler(AgvStateHistoryMapper historyMapper) { this.historyMapper = historyMapper; } private Logger logger = LoggerFactory.getLogger(NettyServerHandler.class); /** * 客户端连接会触发 */ @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { logger.info("Channel active......"); logger.info(historyMapper==null?"mapper空":"mapper不为空"); } /** * 客户端发消息会触发 */ @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { logger.info("服务器收到消息: {}", msg.toString()); String mess = msg.toString(); if(mess.contains("{")){ mess = mess.substring(mess.indexOf("{"),mess.indexOf("}")+1); } AgvStateHistory agvStateHistory = JSON.parseObject(mess, AgvStateHistory.class); historyMapper.insert(agvStateHistory); /*agvStateHistory.setMod(ProListenType.AGVINFO); CopyOnWriteArraySet SESSIONS = ProListenSocketServer.SESSIONS; SESSIONS.forEach(session ->{ try { if (session.isOpen()) { session.getBasicRemote().sendText(JSON.toJSONString(agvStateHistory)); logger.info("成功推送AGV消息到生产监控大屏"+session.getId()+"___"+session.getRequestURI().getHost()); } } catch (IOException e) { throw new RuntimeException(e); } });*/ ctx.write("recive success"); ctx.flush(); } /** * 发生异常触发 */ @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { logger.info("chucuo"+cause.getMessage()); cause.printStackTrace(); ctx.close(); } }