package com.foxinmy.weixin4j.socket; 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; import java.util.Map; import com.foxinmy.weixin4j.dispatcher.WeixinMessageDispatcher; import com.foxinmy.weixin4j.util.AesToken; /** * 微信消息服务器初始化 * * @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 int addAesToken(final AesToken asetoken) { return 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)); } }