Home / Class/ WebSocketClient Class — netty Architecture

WebSocketClient Class — netty Architecture

Architecture documentation for the WebSocketClient class in WebSocketClient.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  99ab3a42_8f1b_c56b_f8c2_da8682a24465["WebSocketClient"]
  f664f8d9_f33f_c7c5_e07b_3ca03e168360["WebSocketClient.java"]
  99ab3a42_8f1b_c56b_f8c2_da8682a24465 -->|defined in| f664f8d9_f33f_c7c5_e07b_3ca03e168360
  4356b4a7_ac28_fc2c_852e_f6eaa958e29f["main()"]
  99ab3a42_8f1b_c56b_f8c2_da8682a24465 -->|method| 4356b4a7_ac28_fc2c_852e_f6eaa958e29f

Relationship Graph

Source Code

example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClient.java lines 59–147

public final class WebSocketClient {

    static final String URL = System.getProperty("url", "ws://127.0.0.1:8080/websocket");
    static final int MAX_CONTENT_LENGTH = 8192;

    public static void main(String[] args) throws Exception {
        URI uri = new URI(URL);
        String scheme = uri.getScheme() == null? "ws" : uri.getScheme();
        final String host = uri.getHost() == null? "127.0.0.1" : uri.getHost();
        final int port;
        if (uri.getPort() == -1) {
            if ("ws".equalsIgnoreCase(scheme)) {
                port = 80;
            } else if ("wss".equalsIgnoreCase(scheme)) {
                port = 443;
            } else {
                port = -1;
            }
        } else {
            port = uri.getPort();
        }

        if (!"ws".equalsIgnoreCase(scheme) && !"wss".equalsIgnoreCase(scheme)) {
            System.err.println("Only WS(S) is supported.");
            return;
        }

        final boolean ssl = "wss".equalsIgnoreCase(scheme);
        final SslContext sslCtx;
        if (ssl) {
            sslCtx = SslContextBuilder.forClient()
                .trustManager(InsecureTrustManagerFactory.INSTANCE).build();
        } else {
            sslCtx = null;
        }

        EventLoopGroup group = new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
        try {
            // Connect with V13 (RFC 6455 aka HyBi-17). You can change it to V08 or V00.
            // If you change it to V00, ping is not supported and remember to change
            // HttpResponseDecoder to WebSocketHttpResponseDecoder in the pipeline.
            final WebSocketClientHandler handler =
                    new WebSocketClientHandler(
                            WebSocketClientHandshakerFactory.newHandshaker(
                                    uri, WebSocketVersion.V13, null, true, new DefaultHttpHeaders()));

            Bootstrap b = new Bootstrap();
            b.group(group)
             .channel(NioSocketChannel.class)
             .handler(new ChannelInitializer<SocketChannel>() {
                 @Override
                 protected void initChannel(SocketChannel ch) {
                     ChannelPipeline p = ch.pipeline();
                     if (sslCtx != null) {
                         p.addLast(sslCtx.newHandler(ch.alloc(), host, port));
                     }
                     p.addLast(
                             new HttpClientCodec(),
                             new HttpObjectAggregator(MAX_CONTENT_LENGTH),
                             new WebSocketClientCompressionHandler(MAX_CONTENT_LENGTH),
                             handler);
                 }
             });

            Channel ch = b.connect(uri.getHost(), port).sync().channel();
            handler.handshakeFuture().sync();

            BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                String msg = console.readLine();
                if (msg == null) {
                    break;
                } else if ("bye".equals(msg.toLowerCase())) {
                    ch.writeAndFlush(new CloseWebSocketFrame());
                    ch.closeFuture().sync();
                    break;
                } else if ("ping".equals(msg.toLowerCase())) {
                    WebSocketFrame frame = new PingWebSocketFrame(Unpooled.wrappedBuffer(new byte[] { 8, 1, 8, 1 }));
                    ch.writeAndFlush(frame);
                } else {
                    WebSocketFrame frame = new TextWebSocketFrame(msg);

Frequently Asked Questions

What is the WebSocketClient class?
WebSocketClient is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClient.java.
Where is WebSocketClient defined?
WebSocketClient is defined in example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClient.java at line 59.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free