Administrator
2022-06-16 2ebca060a47784db76369a4aa84f63293da9be33
src/main/java/org/springblade/modules/nettyServer/ServerHandler.java
@@ -1,89 +1,89 @@
package org.springblade.modules.nettyServer;
import com.alibaba.fastjson.JSONObject;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.CharsetUtil;
import org.springblade.modules.webscoket.service.IPushMsgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@Component
public class ServerHandler extends ChannelInboundHandlerAdapter {
   private String reg_LA = "LA[d]{8}[d|A-F]{12}[d|A-F]{8}[d|A-Z]{2}[d|A-F]{4}[x2A][d|A-F]{6}[#@]";
   private String reg_LB = "LB[\\d|A-F]{12}[\\x2A].*[#@]";
   private String reg_LB2 = "LB[\\d|A-F]{6}[\\x2A].*[#@]";
   private String reg_LD = "LD[d]{8}[d|A-F]{12}:[A-Z]{4}[\\x2A].*[#@]";
   private ConcurrentHashMap<String, Channel> sessionChannelMap = new ConcurrentHashMap<String, Channel>();
   private static ServerHandler serverHandler;
   @PostConstruct
   public void init() {
      serverHandler = this;
   }
   /**
    * 客户端与服务端创建连接的时候调用
    */
   @Override
   public void channelActive(ChannelHandlerContext ctx) throws Exception {
      System.out.println("CTX:" + ctx.channel());
      System.out.println("客户端与服务端连接开始...");
   }
   /**
    * 客户端与服务端断开连接时调用
    */
   @Override
   public void channelInactive(ChannelHandlerContext ctx) throws Exception {
      System.out.println("客户端与服务端连接关闭...");
      NettyConfig.group.remove(ctx.channel());
   }
   /**
    * 服务端接收客户端发送过来的数据结束之后调用
    */
   @Override
   public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
      ctx.flush();
      System.out.println("信息接收完毕...");
   }
   /**
    * 工程出现异常的时候调用
    */
   @Override
   public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
      cause.printStackTrace();
      ctx.close();
   }
   /**
    * 服务端处理客户端websocket请求的核心方法,这里接收了客户端发来的信息
    */
   @Override
   public void channelRead(ChannelHandlerContext channelHandlerContext, Object info) throws Exception {
      System.out.println("接收到了:" + info);
      ByteBuf buf = (ByteBuf) info;
      byte[] req = new byte[buf.readableBytes()];
      buf.readBytes(req);
      String body = new String(req, "UTF-8");
      String content = body;
      System.out.println("接收客户端数据:" + body);
   }
}
//package org.springblade.modules.nettyServer;
//
//import com.alibaba.fastjson.JSONObject;
//import io.netty.buffer.ByteBuf;
//import io.netty.buffer.Unpooled;
//import io.netty.channel.Channel;
//import io.netty.channel.ChannelHandlerContext;
//import io.netty.channel.ChannelInboundHandlerAdapter;
//import io.netty.util.CharsetUtil;
//import org.springblade.modules.webscoket.service.IPushMsgService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import javax.annotation.PostConstruct;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.concurrent.ConcurrentHashMap;
//
//@Component
//public class ServerHandler extends ChannelInboundHandlerAdapter {
//
//   private String reg_LA = "LA[d]{8}[d|A-F]{12}[d|A-F]{8}[d|A-Z]{2}[d|A-F]{4}[x2A][d|A-F]{6}[#@]";
//   private String reg_LB = "LB[\\d|A-F]{12}[\\x2A].*[#@]";
//   private String reg_LB2 = "LB[\\d|A-F]{6}[\\x2A].*[#@]";
//   private String reg_LD = "LD[d]{8}[d|A-F]{12}:[A-Z]{4}[\\x2A].*[#@]";
//
//
//   private ConcurrentHashMap<String, Channel> sessionChannelMap = new ConcurrentHashMap<String, Channel>();
//
//   private static ServerHandler serverHandler;
//
//   @PostConstruct
//   public void init() {
//      serverHandler = this;
//   }
//
//   /**
//    * 客户端与服务端创建连接的时候调用
//    */
//   @Override
//   public void channelActive(ChannelHandlerContext ctx) throws Exception {
//      System.out.println("CTX:" + ctx.channel());
//      System.out.println("客户端与服务端连接开始...");
//   }
//
//   /**
//    * 客户端与服务端断开连接时调用
//    */
//   @Override
//   public void channelInactive(ChannelHandlerContext ctx) throws Exception {
//      System.out.println("客户端与服务端连接关闭...");
//      NettyConfig.group.remove(ctx.channel());
//   }
//
//   /**
//    * 服务端接收客户端发送过来的数据结束之后调用
//    */
//   @Override
//   public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
//      ctx.flush();
//      System.out.println("信息接收完毕...");
//   }
//
//   /**
//    * 工程出现异常的时候调用
//    */
//   @Override
//   public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
//      cause.printStackTrace();
//      ctx.close();
//   }
//
//   /**
//    * 服务端处理客户端websocket请求的核心方法,这里接收了客户端发来的信息
//    */
//   @Override
//   public void channelRead(ChannelHandlerContext channelHandlerContext, Object info) throws Exception {
//      System.out.println("接收到了:" + info);
//      ByteBuf buf = (ByteBuf) info;
//      byte[] req = new byte[buf.readableBytes()];
//      buf.readBytes(req);
//      String body = new String(req, "UTF-8");
//      String content = body;
//      System.out.println("接收客户端数据:" + body);
//
//   }
//
//
//}