WeixinServerInitializer.java
package com.foxinmy.weixin4j.socket;
import java.util.Map;
import com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher;
import com.foxinmy.weixin4j.util.AesToken;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.HttpServerCodec;
/**
* 微信消息服务器初始化
*
* @className WeixinServerInitializer
* @author jinyu(foxinmy@gmail.com)
* @date 2015年5月17日
* @since JDK 1.6
* @see
*/
public class WeixinServerInitializer extends ChannelInitializer<SocketChannel> {
private final WeixinMessageDispatcher messageDispatcher;
private final WeixinMessageDecoder messageDecoder;
public WeixinServerInitializer(Map<String, AesToken> aesTokenMap, WeixinMessageDispatcher messageDispatcher) {
this.messageDispatcher = messageDispatcher;
this.messageDecoder = new WeixinMessageDecoder(aesTokenMap);
}
public void addAesToken(AesToken asetoken) {
messageDecoder.addAesToken(asetoken);
}
@Override
protected void initChannel(SocketChannel channel) {
ChannelPipeline pipeline = channel.pipeline();
pipeline.addLast(new HttpServerCodec());
pipeline.addLast(new HttpObjectAggregator(65536));
pipeline.addLast(messageDecoder);
pipeline.addLast(new WeixinResponseEncoder());
pipeline.addLast(new SingleResponseEncoder());
pipeline.addLast(new WeixinRequestHandler(messageDispatcher));
}
}