//package com.xinyingpower.microphoto.request; // //import java.nio.charset.StandardCharsets; //import java.util.concurrent.TimeUnit; // //import io.netty.bootstrap.Bootstrap; //import io.netty.buffer.ByteBuf; //import io.netty.buffer.Unpooled; //import io.netty.channel.Channel; //import io.netty.channel.ChannelFuture; //import io.netty.channel.ChannelFutureListener; //import io.netty.channel.ChannelInitializer; //import io.netty.channel.ChannelOption; //import io.netty.channel.ChannelPipeline; //import io.netty.channel.EventLoopGroup; //import io.netty.channel.nio.NioEventLoopGroup; //import io.netty.channel.socket.SocketChannel; //import io.netty.channel.socket.nio.NioSocketChannel; //import io.netty.handler.codec.bytes.ByteArrayDecoder; //import io.netty.handler.codec.bytes.ByteArrayEncoder; //import io.netty.handler.codec.string.StringDecoder; //import io.netty.handler.codec.string.StringEncoder; //import io.netty.handler.timeout.IdleStateHandler; // //public class NettyChatClient { // private static NettyChatClient mNettyChatClient; // private static String mServerIp; // private static int mPort; // private Channel mChannel; // /** // * 重连策略 // */ // private RetryPolicy mRetryPolicy; // private Bootstrap mBootstrap; // // public void init(INettyMessageListener messageListener) { // mRetryPolicy = new ExponentialBackOffRetry(3000, Integer.MAX_VALUE, 3 * 1000); // EventLoopGroup group = new NioEventLoopGroup();//初始化线程组 // // bootstrap 可重用, 只需在TcpClient实例化的时候初始化即可. // mBootstrap = new Bootstrap(); // mBootstrap.group(group) // .option(ChannelOption.TCP_NODELAY, true) // .channel(NioSocketChannel.class) // .handler(new ClientHandlersInitializer()); // // } // // public static NettyChatClient newInstance(String serverIp, int port) { // if (mNettyChatClient == null) { // mNettyChatClient = new NettyChatClient(); // mServerIp = serverIp; // mPort = port; // } // return mNettyChatClient; // } // // public static NettyChatClient getInstance() { // return mNettyChatClient; // } // // /** // * 向远程TCP服务器请求连接 // */ // public void connect() { // synchronized (mBootstrap) { // ChannelFuture future = mBootstrap.connect(mServerIp, mPort); // future.addListener(getConnectionListener()); // this.mChannel = future.channel(); // } // } // // private ChannelFutureListener getConnectionListener() { // return future -> { // if (!future.isSuccess()) { // future.channel().pipeline().fireChannelInactive(); // } // }; // } // // private class ClientHandlersInitializer extends ChannelInitializer { // // @Override // protected void initChannel(SocketChannel ch) { // ChannelPipeline pipeline = ch.pipeline(); // pipeline.addLast(new ByteArrayDecoder()); // pipeline.addLast(new ByteArrayEncoder()); // pipeline.addLast(new IdleStateHandler(100, 100, 0, TimeUnit.SECONDS)); // pipeline.addLast(new ReconnectHandler(mNettyChatClient)); // } // // } // // // public RetryPolicy getRetryPolicy() { // return mRetryPolicy; // } // // public void sendMessage(String content) { // if (mChannel != null) { // mChannel.writeAndFlush(content); // } // } // // public void sendByteMessage(byte[] content) { // ByteBuf bb = Unpooled.wrappedBuffer((content)); // if (mChannel != null) { // mChannel.writeAndFlush(bb).addListener(new ChannelFutureListener() { // @Override // public void operationComplete(ChannelFuture future) throws Exception { // System.out.println("dfsa"); // } // }); // } // } //} //