private SSLEngine enableALPN(SSLEngine sslEngine) {
        if (sslEngine == null) {
            return null;
        }
        if (mAlpnEnabled) {
            return sslEngine;
        }
        mAlpnEnabled = true;
        // Nothing to enable.
        if (mSelectedAlpnProtocol == null) {
            return sslEngine;
        }
        try {
            String sslEngineName = sslEngine.getClass().getSimpleName();
            if (sslEngineName.equals("Java8EngineWrapper")) {
                enableJava8EngineWrapperAlpn(sslEngine);
            } else if (sslEngineName.equals("ConscryptEngine")) {
                enableConscryptEngineAlpn(sslEngine);
            } else {
                enableOpenSSLEngineImplAlpn(sslEngine);
            }
        } catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException |
                InvocationTargetException e) {
            NetBareLog.wtf(e);
        }
        return sslEngine;
    }
Http request ssl codec enables Application-Layer Protocol Negotiation(ALPN).

See http://tools.ietf.org/html/draft-agl-tls-nextprotoneg-04#page-4

@author Megatron King
@since 2019/1/3 23:01
netbare-core/src/main/java/com/github/megatronking/netbare/http/HttpSSLRequestCodec.java