| | |
| | | |
| | | 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; |
| | |
| | | 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); |
| | | } |
| | | } |
| | | |