private static URI validateUri(URI uri) {
        if (Clients.isUndefinedUri(uri)) {
            return uri;
        }
        final String givenScheme = requireNonNull(uri, "uri").getScheme();
        final Scheme scheme = validateScheme(givenScheme);
        if (scheme.uriText().equals(givenScheme)) {
            // No need to replace the user-specified scheme because it's already in its normalized form.
            return uri;
        }
        // Replace the user-specified scheme with the normalized one.
        // e.g. http://foo.com/ -> ws+http://foo.com/
        return URI.create(scheme.uriText() + uri.toString().substring(givenScheme.length()));
    }
Builds a {@link WebSocketClient}.
This client has the different default options from {@link WebClient}. Here are the differences:
<ul>
  <li>{@link ClientOptions#RESPONSE_TIMEOUT_MILLIS} is {@code 0}.</li>
  <li>{@link ClientOptions#MAX_RESPONSE_LENGTH} is {@code 0}.</li>
  <li>{@link ClientOptions#REQUEST_AUTO_ABORT_DELAY_MILLIS} is {@code 5000}.</li>
  <li>{@link ClientOptions#AUTO_FILL_ORIGIN_HEADER} is {@code true}.</li>
</ul>
core/src/main/java/com/linecorp/armeria/client/websocket/WebSocketClientBuilder.java