
com.aggrepoint.utils.ws.WebSocketClient Maven / Gradle / Ivy
The newest version!
package com.aggrepoint.utils.ws;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import javax.net.ssl.SSLException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.netty.bootstrap.Bootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.handler.codec.http.DefaultHttpHeaders;
import io.netty.handler.codec.http.HttpClientCodec;
import io.netty.handler.codec.http.HttpObjectAggregator;
import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketVersion;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
/**
* 一个WebSocketClient实例代表一个WebSocket的客户连接。
*
* @param
* @param
*/
public class WebSocketClient {
public static final long DEFAULT_INACTIVE_TIME = 60 * 1000;
private static final Logger logger = LoggerFactory.getLogger(WebSocketClient.class);
private static ScheduledExecutorService scheduleService = Executors.newScheduledThreadPool(20);
private WebSocketClientBuilder builder;
/** 不为空表示连接成功 */
private Channel channel;
/** 最后一次活跃时间 */
private long activeTimestamp;
/** 最后一次主动发送心跳的时间 */
private long heartBeatTime;
/** 发送请求消息的时间间隔 */
private long requestInterval;
/** 是否正在连接中。避免重复连接 */
private boolean connecting = false;
/** websocket的onConnect是否已经运行完毕 */
private boolean connected = false;
private ReentrantLock connectedLock = new ReentrantLock();
/** 消息发送速度控制:当前正在等待发送的所有消息 */
private List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy