Example usage for io.netty.handler.codec.http.websocketx.extensions WebSocketClientExtensionHandler WebSocketClientExtensionHandler

List of usage examples for io.netty.handler.codec.http.websocketx.extensions WebSocketClientExtensionHandler WebSocketClientExtensionHandler

Introduction

In this page you can find the example usage for io.netty.handler.codec.http.websocketx.extensions WebSocketClientExtensionHandler WebSocketClientExtensionHandler.

Prototype

public WebSocketClientExtensionHandler(WebSocketClientExtensionHandshaker... extensionHandshakers) 

Source Link

Document

Constructor

Usage

From source file:io.vertx.core.http.impl.Http1xClientConnection.java

License:Open Source License

synchronized void toWebSocket(String requestURI, MultiMap headers, WebsocketVersion vers, String subProtocols,
        int maxWebSocketFrameSize, Handler<WebSocket> wsConnect) {
    if (ws != null) {
        throw new IllegalStateException("Already websocket");
    }/* w  w w  . ja va 2s  .  c  o  m*/

    try {
        URI wsuri = new URI(requestURI);
        if (!wsuri.isAbsolute()) {
            // Netty requires an absolute url
            wsuri = new URI((ssl ? "https:" : "http:") + "//" + host + ":" + port + requestURI);
        }
        WebSocketVersion version = WebSocketVersion
                .valueOf((vers == null ? WebSocketVersion.V13 : vers).toString());
        HttpHeaders nettyHeaders;
        if (headers != null) {
            nettyHeaders = new DefaultHttpHeaders();
            for (Map.Entry<String, String> entry : headers) {
                nettyHeaders.add(entry.getKey(), entry.getValue());
            }
        } else {
            nettyHeaders = null;
        }

        ChannelPipeline p = chctx.channel().pipeline();
        ArrayList<WebSocketClientExtensionHandshaker> extensionHandshakers = initializeWebsocketExtensionHandshakers(
                client.getOptions());
        if (!extensionHandshakers.isEmpty()) {
            p.addBefore("handler", "websocketsExtensionsHandler",
                    new WebSocketClientExtensionHandler(extensionHandshakers
                            .toArray(new WebSocketClientExtensionHandshaker[extensionHandshakers.size()])));
        }

        handshaker = WebSocketClientHandshakerFactory.newHandshaker(wsuri, version, subProtocols,
                !extensionHandshakers.isEmpty(), nettyHeaders, maxWebSocketFrameSize,
                !options.isSendUnmaskedFrames(), false);

        p.addBefore("handler", "handshakeCompleter",
                new HandshakeInboundHandler(wsConnect, version != WebSocketVersion.V00));
        handshaker.handshake(chctx.channel()).addListener(future -> {
            Handler<Throwable> handler = exceptionHandler();
            if (!future.isSuccess() && handler != null) {
                handler.handle(future.cause());
            }
        });
    } catch (Exception e) {
        handleException(e);
    }
}