package com.xcong.excoin.netty.dispatch; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.netty.bean.RequestBean; import com.xcong.excoin.netty.bean.ResponseBean; import com.xcong.excoin.netty.common.ChannelManager; import com.xcong.excoin.netty.common.Contans; import com.xcong.excoin.netty.common.NettyTools; import com.xcong.excoin.netty.logic.MsgLogic; import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; /** * @author wzy * @date 2019-05-08 */ @Slf4j @Component("msgDispatch") public class MsgDispatch { @Autowired private MsgLogic msgLogic; public void webSocketDispatch(ChannelHandlerContext ctx, String msg) { RequestBean requestBean = JSONObject.parseObject(msg, RequestBean.class); // 判断当前通道用户是否已经登陆 if (StrUtil.isEmpty(ChannelManager.findWsMemberId(ctx.channel())) && requestBean.getType() != Contans.AUTH_CHECK) { ResponseBean res = ResponseBean.fail(); res.setType(requestBean.getType()); ctx.channel().writeAndFlush(NettyTools.webSocketBytes(JSONObject.toJSONString(res))); return; } try { requestBean.setChannelId(ctx.channel().id().asShortText()); msgLogic.webSocketMsgLogic(requestBean); } catch (Exception e) { log.info("#websocket json error:#", e); ctx.channel().writeAndFlush(NettyTools.wsSendMsg(ResponseBean.fail())); } } }