public ClientFactoryBuilder pingIntervalMillis(long pingIntervalMillis) {
        checkArgument(pingIntervalMillis == 0 || pingIntervalMillis >= MIN_PING_INTERVAL_MILLIS,
                      "pingIntervalMillis: %s (expected: >= %s or == 0)", pingIntervalMillis,
                      MIN_PING_INTERVAL_MILLIS);
        option(ClientFactoryOptions.PING_INTERVAL_MILLIS, pingIntervalMillis);
        return this;
    }
Sets the PING interval in milliseconds.
When neither read nor write was performed for the given {@code pingIntervalMillis},
a <a href="https://datatracker.ietf.org/doc/html/rfc7540#section-6.7">PING</a> frame is sent for HTTP/2
or an <a href="https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.7">OPTIONS</a> request with
an asterisk ("*") is sent for HTTP/1.

<p>Note that this settings is only in effect when {@link #idleTimeoutMillis(long)}} or
{@link #idleTimeout(Duration)} is greater than the specified PING interval.

<p>The minimum allowed PING interval is {@value #MIN_PING_INTERVAL_MILLIS} milliseconds.
{@code 0} means the client will not send a PING.

@throws IllegalArgumentException if the specified {@code pingIntervalMillis} is smaller than
                                 {@value #MIN_PING_INTERVAL_MILLIS} milliseconds.
core/src/main/java/com/linecorp/armeria/client/ClientFactoryBuilder.java