From ef5a518c3e2c1fe41aa60f56ca31ddafa0cb1561 Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期四, 23 五月 2024 08:32:36 +0800
Subject: [PATCH] 添加产品汇总报表

---
 north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java |   82 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 82 insertions(+), 0 deletions(-)

diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java b/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java
new file mode 100644
index 0000000..e6907f2
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java
@@ -0,0 +1,82 @@
+package com.example.erp.tools.netty;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.SimpleChannelInboundHandler;
+import io.netty.handler.codec.http.FullHttpRequest;
+import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MyWebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
+
+    @Override
+    public void channelActive(ChannelHandlerContext ctx) throws Exception {
+        System.out.println("涓庡鎴风寤虹珛杩炴帴锛岄�氶亾寮�鍚紒");
+
+        //娣诲姞鍒癱hannelGroup閫氶亾缁�
+        MyChannelHandlerPool.channelGroup.add(ctx.channel());
+    }
+
+    @Override
+    public void channelInactive(ChannelHandlerContext ctx) throws Exception {
+        System.out.println("涓庡鎴风鏂紑杩炴帴锛岄�氶亾鍏抽棴锛�");
+        //娣诲姞鍒癱hannelGroup 閫氶亾缁�
+        MyChannelHandlerPool.channelGroup.remove(ctx.channel());
+    }
+
+    @Override
+    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
+        //棣栨杩炴帴鏄疐ullHttpRequest锛屽鐞嗗弬鏁� by zhengkai.blog.csdn.net
+        if (null != msg && msg instanceof FullHttpRequest) {
+            FullHttpRequest request = (FullHttpRequest) msg;
+            String uri = request.uri();
+
+            Map paramMap=getUrlParams(uri);
+            //System.out.println("鎺ユ敹鍒扮殑鍙傛暟鏄細"+paramMap);
+            //濡傛灉url鍖呭惈鍙傛暟锛岄渶瑕佸鐞�
+            if(uri.contains("?")){
+                String newUri=uri.substring(0,uri.indexOf("?"));
+                request.setUri(newUri);
+            }
+
+        }else if(msg instanceof TextWebSocketFrame){
+            //姝e父鐨凾EXT娑堟伅绫诲瀷
+            TextWebSocketFrame frame=(TextWebSocketFrame)msg;
+            System.out.println("瀹㈡埛绔敹鍒版湇鍔″櫒鏁版嵁锛�" +frame.text());
+            sendAllMessage(frame.text());
+        }
+        super.channelRead(ctx, msg);
+    }
+
+    @Override
+    protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) throws Exception {
+
+    }
+
+    public void sendAllMessage(String message){
+        //鏀跺埌淇℃伅鍚庯紝缇ゅ彂缁欐墍鏈塩hannel
+        MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame(message));
+    }
+
+    private static Map getUrlParams(String url){
+        Map<String,String> map = new HashMap<>();
+        url = url.replace("?",";");
+        if (!url.contains(";")){
+            return map;
+        }
+        if (url.split(";").length > 0){
+            String[] arr = url.split(";")[1].split("&");
+            for (String s : arr){
+                String key = s.split("=")[0];
+                String value = s.split("=")[1];
+                map.put(key,value);
+            }
+            return  map;
+
+        }else{
+            return map;
+        }
+    }
+}
+

--
Gitblit v1.8.0