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