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);
|
}
|
logger.info("服务器处理消息: {}", mess);
|
AgvStateHistory agvStateHistory = JSON.parseObject(mess, AgvStateHistory.class);
|
historyMapper.insert(agvStateHistory);
|
|
/*agvStateHistory.setMod(ProListenType.AGVINFO);
|
CopyOnWriteArraySet<Session> 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();
|
}
|
|
}
|