|
|
@ -1,19 +1,48 @@ |
|
|
|
package com.palnet.server.handler; |
|
|
|
package com.palnet.server.handler; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
|
|
|
|
|
import com.palnet.comn.model.CtrCntrlModel; |
|
|
|
|
|
|
|
import com.palnet.comn.model.CtrHistoryShareContext; |
|
|
|
|
|
|
|
import com.palnet.comn.model.GPModel; |
|
|
|
|
|
|
|
import com.palnet.comn.utils.ContextUtils; |
|
|
|
|
|
|
|
import com.palnet.comn.utils.JsonUtils; |
|
|
|
|
|
|
|
import com.palnet.server.codec.WebPayLoad; |
|
|
|
|
|
|
|
import com.palnet.server.codec.WebPayLoadResponse; |
|
|
|
import com.palnet.server.collection.ChannelCollection; |
|
|
|
import com.palnet.server.collection.ChannelCollection; |
|
|
|
|
|
|
|
import com.palnet.server.task.ctr.service.CtrCntrlTaskService; |
|
|
|
|
|
|
|
import io.netty.buffer.ByteBuf; |
|
|
|
|
|
|
|
import io.netty.channel.ChannelHandler; |
|
|
|
import io.netty.channel.ChannelHandlerContext; |
|
|
|
import io.netty.channel.ChannelHandlerContext; |
|
|
|
|
|
|
|
import io.netty.channel.ChannelInboundHandlerAdapter; |
|
|
|
import io.netty.channel.SimpleChannelInboundHandler; |
|
|
|
import io.netty.channel.SimpleChannelInboundHandler; |
|
|
|
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; |
|
|
|
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; |
|
|
|
import io.netty.handler.codec.http.websocketx.WebSocketFrame; |
|
|
|
import io.netty.handler.codec.http.websocketx.WebSocketFrame; |
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.nio.charset.Charset; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Slf4j |
|
|
|
public class WebHandler extends SimpleChannelInboundHandler<WebSocketFrame> { |
|
|
|
public class WebHandler extends SimpleChannelInboundHandler<WebSocketFrame> { |
|
|
|
|
|
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass()); |
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass()); |
|
|
|
|
|
|
|
|
|
|
|
ChannelCollection cc = new ChannelCollection(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private CtrCntrlTaskService taskService; |
|
|
|
|
|
|
|
private CtrHistoryShareContext context; |
|
|
|
|
|
|
|
private ObjectMapper objectMapper; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public WebHandler() { |
|
|
|
|
|
|
|
this.taskService = (CtrCntrlTaskService) ContextUtils.getBean("ctrCntrlTaskService"); |
|
|
|
|
|
|
|
this.context = (CtrHistoryShareContext) ContextUtils.getBean("ctrHistoryShareContext"); |
|
|
|
|
|
|
|
this.objectMapper = JsonUtils.getObjectMapper(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ChannelCollection cc = new ChannelCollection(); |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
protected void channelRead0(ChannelHandlerContext ctx, WebSocketFrame frame) throws Exception { |
|
|
|
protected void channelRead0(ChannelHandlerContext ctx, WebSocketFrame frame) throws Exception { |
|
|
@ -27,39 +56,60 @@ public class WebHandler extends SimpleChannelInboundHandler<WebSocketFrame>{ |
|
|
|
c.writeAndFlush(new TextWebSocketFrame("test")); |
|
|
|
c.writeAndFlush(new TextWebSocketFrame("test")); |
|
|
|
// command.execute(c, data, result);
|
|
|
|
// command.execute(c, data, result);
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ctx.writeAndFlush(new TextWebSocketFrame("Test"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// private class HeartBeatTask implements Runnable{
|
|
|
|
// @Override
|
|
|
|
|
|
|
|
// public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
|
|
|
|
|
|
|
|
// String json = ((ByteBuf) msg).toString(Charset.forName("UTF8"));
|
|
|
|
|
|
|
|
// GPModel model = objectMapper.readValue(json, GPModel.class);
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// private final ChannelHandlerContext ctx;
|
|
|
|
// CtrCntrlModel history = taskService.modelConvert(model);
|
|
|
|
|
|
|
|
// context.putHistory(model.getObjectId(), history);
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// public HeartBeatTask(final ChannelHandlerContext ctx){
|
|
|
|
// log.info("message from received : {}", msg);
|
|
|
|
// this.ctx = ctx;
|
|
|
|
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// public void run() {
|
|
|
|
// @Override
|
|
|
|
// ctx.writeAndFlush(new TextWebSocketFrame("test"));
|
|
|
|
// public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
|
|
|
|
|
|
|
|
// super.exceptionCaught(ctx, cause);
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// @Override
|
|
|
|
|
|
|
|
// protected void channelRead0(ChannelHandlerContext ctx, GPModel payload) {
|
|
|
|
|
|
|
|
// WebPayLoadResponse response = new WebPayLoadResponse();
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// logger.info("==================== [ channelRead0 ] ==================== ");
|
|
|
|
|
|
|
|
// logger.info("AUTH KEY : {}", payload.getAuthKey());
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// if(payload.getObjectId().isEmpty()) {
|
|
|
|
|
|
|
|
// logger.info("====== auth key is empty ======");
|
|
|
|
//
|
|
|
|
//
|
|
|
|
// System.out.println("Client send heart beat message to server : ---> ");
|
|
|
|
// response.setRspCode("-2000");
|
|
|
|
|
|
|
|
// response.setRspMessage("auth key is empty !");
|
|
|
|
|
|
|
|
// } else {
|
|
|
|
|
|
|
|
// log.info("WEBSOCKET BODY : {}", payload);
|
|
|
|
|
|
|
|
// String json = payload.getBody();
|
|
|
|
|
|
|
|
// GPModel model = objectMapper.readValue(json, GPModel.class);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// CtrCntrlModel history = taskService.modelConvert(model);
|
|
|
|
|
|
|
|
// context.putHistory(model.getObjectId(), history);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
//
|
|
|
|
|
|
|
|
// cc.getAllChannels().stream().forEach(c -> {
|
|
|
|
|
|
|
|
// logger.info(":" + c);
|
|
|
|
|
|
|
|
// c.writeAndFlush(new TextWebSocketFrame("test"));
|
|
|
|
|
|
|
|
//// command.execute(c, data, result);
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
//
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void channelActive(ChannelHandlerContext ctx) throws Exception { |
|
|
|
public void channelActive(ChannelHandlerContext ctx) throws Exception { |
|
|
|
// SocketAddress remoteAddress = ctx.channel().remoteAddress();
|
|
|
|
|
|
|
|
cc.setAllChannels(ctx.channel()); |
|
|
|
cc.setAllChannels(ctx.channel()); |
|
|
|
// ctx.executor().scheduleAtFixedRate(new HeartBeatTask(ctx),0,500,
|
|
|
|
|
|
|
|
// TimeUnit.MILLISECONDS);
|
|
|
|
|
|
|
|
logger.info("==================== [ channelActive ] ==================== "); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
logger.info("==================== [ channelActive ] ==================== "); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|