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