From 5285d249e702eeab3ad3847aaa24523ef0f1a544 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 24 Feb 2021 18:11:06 +0800
Subject: [PATCH] add websocket

---
 src/main/java/com/xcong/excoin/netty/dispatch/MsgDispatch.java |   44 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/netty/dispatch/MsgDispatch.java b/src/main/java/com/xcong/excoin/netty/dispatch/MsgDispatch.java
index 540fd36..5471a7f 100644
--- a/src/main/java/com/xcong/excoin/netty/dispatch/MsgDispatch.java
+++ b/src/main/java/com/xcong/excoin/netty/dispatch/MsgDispatch.java
@@ -2,6 +2,10 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.xcong.excoin.netty.bean.RequestBean;
+import com.xcong.excoin.netty.bean.SubRequest;
+import com.xcong.excoin.netty.bean.SubResponse;
+import com.xcong.excoin.netty.bean.UnSubResponse;
+import com.xcong.excoin.netty.common.ChannelManager;
 import com.xcong.excoin.netty.common.NettyTools;
 import com.xcong.excoin.netty.logic.MsgLogic;
 import io.netty.channel.ChannelHandlerContext;
@@ -27,14 +31,38 @@
     private MsgLogic msgLogic;
 
     public void webSocketDispatch(ChannelHandlerContext ctx, String msg) {
-        RequestBean requestBean = null;
-        try {
-            requestBean = JSONObject.parseObject(msg, RequestBean.class);
-            requestBean.setChannelId(ctx.channel().id().asShortText());
-            msgLogic.webSocketMsgLogic(requestBean);
-        } catch (Exception e) {
-            log.info("#websocket json error:{}#", e);
-            ctx.channel().writeAndFlush(NettyTools.webSocketBytes("params error"));
+        JSONObject jsonObject = JSONObject.parseObject(msg);
+        if (jsonObject.containsKey("sub")) {
+            String sub = jsonObject.getString("sub");
+            log.info("{}", sub);
+            String[] split = sub.split("\\.");
+            if (split.length != 4) {
+                ctx.writeAndFlush("error");
+                return;
+            }
+
+            ChannelManager.putSymbolSubChannel(split[1], ctx.channel(), split[2]);
+            SubResponse subResponse = new SubResponse();
+            subResponse.setSubbed(sub);
+            subResponse.setId(jsonObject.getString("id"));
+            subResponse.setTs(System.currentTimeMillis());
+            subResponse.setStatus("ok");
+            ctx.writeAndFlush(NettyTools.webSocketBytes(JSONObject.toJSONString(subResponse)));
+        } else if (jsonObject.containsKey("unsub")) {
+            String sub = jsonObject.getString("unsub");
+            String[] split = sub.split("\\.");
+            if (split.length != 4) {
+                ctx.writeAndFlush("error");
+                return;
+            }
+
+            ChannelManager.removeSymbolUnSubChannel(split[1], ctx.channel(), split[2]);
+            UnSubResponse resp = new UnSubResponse();
+            resp.setSubbed(sub);
+            resp.setId(jsonObject.getString("id"));
+            resp.setTs(System.currentTimeMillis());
+            resp.setStatus("ok");
+            ctx.writeAndFlush(resp);
         }
     }
 

--
Gitblit v1.9.1