package com.xcong.excoin.netty.dispatch;
|
|
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;
|
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 implements ApplicationContextAware {
|
|
private ApplicationContext applicationContext;
|
|
@Autowired
|
private MsgLogic msgLogic;
|
|
public void webSocketDispatch(ChannelHandlerContext ctx, String msg) {
|
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);
|
}
|
}
|
|
|
@Override
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
this.applicationContext = applicationContext;
|
}
|
}
|