QuicOptions.Builder

public class QuicOptions.Builder


QuicOptions 的建構工具。

摘要

公用方法

QuicOptions.Builder

將主機加入 QUIC 許可清單。

QuicOptions.Builder

新增 QUIC 標記,在 QUIC 交握的連線選項中傳送,只會影響用戶端。

QuicOptions.Builder

新增 QUIC 標記,在 QUIC 握手程序的連線選項中傳送。

QuicOptions.Builder

將 QUIC 版本新增至要啟用的 QUIC 版本清單。

QuicOptions.Builder

設定任意 QUICHE 旗標。

QuicOptions

根據這個建構工具中的值,建立並傳回最終的 QuicOptions 例項。

QuicOptions.Builder
@QuicOptions.Experimental
closeSessionsOnIpChange(boolean closeSessionsOnIpChange)

設定是否應在 IP 位址變更時關閉 QUIC 工作階段。

QuicOptions.Builder
@QuicOptions.Experimental
delayJobsWithAvailableSpdySession(
    boolean delayJobsWithAvailableSpdySession
)

設定 Cronet 是否應等待主要路徑 (通常是 QUIC) 準備就緒,即使有可立即連線的伺服器次要路徑 (SPDY / HTTP2) 也是如此。

QuicOptions.Builder
@QuicOptions.Experimental
enableTlsZeroRtt(boolean enableTlsZeroRtt)

設定是否應啟用 0-RTT 的 TLS。

QuicOptions.Builder
@QuicOptions.Experimental
goawaySessionsOnIpChange(boolean goawaySessionsOnIpChange)

設定是否應在 IP 位址變更時,將 QUIC 工作階段設為 goaway。

QuicOptions.Builder
@QuicOptions.Experimental
increaseBrokenServicePeriodExponentially(
    boolean increaseBrokenServicePeriodExponentially
)

設定中斷的伺服器週期是否應呈指數級擴展。

QuicOptions.Builder
@QuicOptions.Experimental
retryWithoutAltSvcOnQuicErrors(boolean retryWithoutAltSvcOnQuicErrors)

設定是否應重試因 QUIC 通訊協定錯誤而失敗的要求,且不使用任何 alt-svc 伺服器。

QuicOptions.Builder
@QuicOptions.Experimental
setCryptoHandshakeTimeoutSeconds(long cryptoHandshakeTimeoutSeconds)

設定連線 SSL 交握的逾時時間。

QuicOptions.Builder
setHandshakeUserAgent(String handshakeUserAgent)

設定要在 HTTP 要求以外使用的使用者代理程式 (例如用於 QUIC 交握)。

QuicOptions.Builder

setIdleConnectionTimeoutSeconds 相同,但使用 java.time.Duration

QuicOptions.Builder
setIdleConnectionTimeoutSeconds(long idleConnectionTimeoutSeconds)

設定連線的閒置時間上限。

QuicOptions.Builder
setInMemoryServerConfigsCacheSize(int inMemoryServerConfigsCacheSize)

設定應在記憶體中保留多少伺服器設定 (例如替代服務清單、是否支援 QUIC 等中繼資料)。

QuicOptions.Builder
@QuicOptions.Experimental
setInitialBrokenServicePeriodSeconds(
    long initialBrokenServicePeriodSeconds
)

設定初始值,在伺服器的 QUIC 支援功能損壞後,Cronet 不應嘗試對特定伺服器使用 QUIC。

QuicOptions.Builder
@QuicOptions.Experimental
setPreCryptoHandshakeIdleTimeoutSeconds(
    long preCryptoHandshakeIdleTimeoutSeconds
)

設定尚未完成 SSL 交握的連線最長閒置時間。

QuicOptions.Builder
@QuicOptions.Experimental
setRetransmittableOnWireTimeoutMillis(
    long retransmittableOnWireTimeoutMillis
)

設定線路上封包間的最大期望時間。

公用方法

addAllowedQuicHost

public QuicOptions.Builder addAllowedQuicHost(String quicHost)

將主機加入 QUIC 許可清單。

如未指定任何主機,系統會停用主機許可清單功能。否則,Cronet 只會在與允許清單中的主機通訊時使用 QUIC。

傳回
QuicOptions.Builder

用於鏈結的建構工具

addClientConnectionOption

@QuicOptions.QuichePassthroughOption
public QuicOptions.Builder addClientConnectionOption(String clientConnectionOption)

新增 QUIC 標記,在 QUIC 交握的連線選項中傳送,只會影響用戶端。

詳情請參閱 addConnectionOption

addConnectionOption

@QuicOptions.QuichePassthroughOption
public QuicOptions.Builder addConnectionOption(String connectionOption)

新增 QUIC 標記,在 QUIC 握手程序的連線選項中傳送。

QUIC 標記應以字串形式呈現,長度最多四個字母 (例如 NBHD)。

由於 QUIC 標記仍在積極開發中,且部分標記只與伺服器相關,Cronet 不會嘗試維護所有支援的 QUIC 標記完整清單,做為 API 的一部分。旗標。如要查看 Cronet 和 Google 伺服器使用的 QUIC 實作項目 QUICHE 支援的標記,請參閱這個網頁

傳回
QuicOptions.Builder

用於鏈結的建構工具

addEnabledQuicVersion

@QuicOptions.QuichePassthroughOption
public QuicOptions.Builder addEnabledQuicVersion(String enabledQuicVersion)

將 QUIC 版本新增至要啟用的 QUIC 版本清單。

如未指定版本,Cronet 會使用預設 QUIC 版本清單。

版本格式由 QUICHE 指定。除了篩除已知已過時的值,Cronet 不會處理版本,只會將版本傳遞給 QUICHE。

傳回
QuicOptions.Builder

用於鏈結的建構工具

addExtraQuicheFlag

@QuicOptions.QuichePassthroughOption
public QuicOptions.Builder addExtraQuicheFlag(String extraQuicheFlag)

設定任意 QUICHE 旗標。旗標應以 FLAG_NAME=FLAG_VALUE 格式傳遞。如需完整旗標清單,請參閱 QUICHE 程式碼集

傳回
QuicOptions.Builder

用於鏈結的建構工具

build

public QuicOptions build()

根據這個建構工具中的值,建立並傳回最終的 QuicOptions 例項。

closeSessionsOnIpChange

@QuicOptions.Experimental
public QuicOptions.Builder closeSessionsOnIpChange(boolean closeSessionsOnIpChange)

設定是否應在 IP 位址變更時關閉 QUIC 工作階段。

請勿與連線遷移作業 (使用 ConnectionMigrationOptions 設定) 搭配使用。

傳回
QuicOptions.Builder

用於鏈結的建構工具

delayJobsWithAvailableSpdySession

@QuicOptions.Experimental
public QuicOptions.Builder delayJobsWithAvailableSpdySession(
    boolean delayJobsWithAvailableSpdySession
)

設定 Cronet 是否應等待主要路徑 (通常是 QUIC) 準備就緒,即使有可立即連線的伺服器次要路徑 (SPDY / HTTP2) 也是如此。

傳回
QuicOptions.Builder

用於鏈結的建構工具

enableTlsZeroRtt

@QuicOptions.Experimental
public QuicOptions.Builder enableTlsZeroRtt(boolean enableTlsZeroRtt)

設定是否應啟用 TLS 0-RTT。

0-RTT 是一種效能最佳化功能,可避免在恢復連線至已知伺服器時,發生額外的往返行程。

傳回
QuicOptions.Builder

用於鏈結的建構工具

goawaySessionsOnIpChange

@QuicOptions.Experimental
public QuicOptions.Builder goawaySessionsOnIpChange(boolean goawaySessionsOnIpChange)

設定是否應在 IP 位址變更時,將 QUIC 工作階段設為 goaway。

請勿與連線遷移作業 (使用 ConnectionMigrationOptions 設定) 搭配使用。

傳回
QuicOptions.Builder

用於鏈結的建構工具

increaseBrokenServicePeriodExponentially

@QuicOptions.Experimental
public QuicOptions.Builder increaseBrokenServicePeriodExponentially(
    boolean increaseBrokenServicePeriodExponentially
)

設定中斷的伺服器週期是否應呈指數級擴展。

如果設為 true,後續重試的初始延遲 (可透過 setInitialBrokenServicePeriodSeconds 設定) 會呈指數級增加 (SCALING_FACTOR^NUM_TRIES * delay)。如果設為 false,延遲會呈線性增加 (SCALING_FACTOR * NUM_TRIES * delay)。

傳回
QuicOptions.Builder

用於鏈結的建構工具

retryWithoutAltSvcOnQuicErrors

@QuicOptions.Experimental
public QuicOptions.Builder retryWithoutAltSvcOnQuicErrors(boolean retryWithoutAltSvcOnQuicErrors)

設定是否應重試因 QUIC 通訊協定錯誤而失敗的要求,且不使用任何 alt-svc 伺服器。

傳回
QuicOptions.Builder

用於鏈結的建構工具

setCryptoHandshakeTimeoutSeconds

@QuicOptions.Experimental
public QuicOptions.Builder setCryptoHandshakeTimeoutSeconds(long cryptoHandshakeTimeoutSeconds)

設定連線 SSL 交握的逾時時間。

傳回
QuicOptions.Builder

用於鏈結的建構工具

setHandshakeUserAgent

public QuicOptions.Builder setHandshakeUserAgent(String handshakeUserAgent)

設定要在 HTTP 要求以外使用的使用者代理程式 (例如用於 QUIC 交握)。

如要為 HTTP 要求設定預設使用者代理程式,請改用 setUserAgent

傳回
QuicOptions.Builder

用於鏈結的建構工具

setIdleConnectionTimeout

@RequiresApi(value = VERSION_CODES.O)
public QuicOptions.Builder setIdleConnectionTimeout(@NonNull Duration idleConnectionTimeout)

setIdleConnectionTimeoutSeconds 相同,但使用 java.time.Duration

傳回
QuicOptions.Builder

用於鏈結的建構工具

setIdleConnectionTimeoutSeconds

public QuicOptions.Builder setIdleConnectionTimeoutSeconds(long idleConnectionTimeoutSeconds)

設定連線的閒置時間上限。閒置逾時的實際值是這個值和伺服器的最小值,會在交握期間協商。因此,這項設定只會在交握完成後套用。如果系統在設定的時間長度內未偵測到連線活動,就會關閉連線。

詳情請參閱 RFC 9114 的 5.1 節

傳回
QuicOptions.Builder

用於鏈結的建構工具

setInMemoryServerConfigsCacheSize

public QuicOptions.Builder setInMemoryServerConfigsCacheSize(int inMemoryServerConfigsCacheSize)

設定應在記憶體中保留多少伺服器設定 (例如替代服務清單、是否支援 QUIC 等中繼資料)。

如果設定儲存路徑 (setStoragePath),Cronet 也會將伺服器設定保留在磁碟上。

傳回
QuicOptions.Builder

用於鏈結的建構工具

setInitialBrokenServicePeriodSeconds

@QuicOptions.Experimental
public QuicOptions.Builder setInitialBrokenServicePeriodSeconds(
    long initialBrokenServicePeriodSeconds
)

設定初始值,在伺服器的 QUIC 支援功能損壞後,Cronet 不應嘗試對特定伺服器使用 QUIC。

一旦 Cronet 偵測到伺服器宣傳 QUIC,但實際上並非如此,就會將該伺服器標示為損壞,並在一段時間內與該伺服器通訊時,不會嘗試使用 QUIC。Cronet 經過這個時間點後,會再次嘗試使用 QUIC。這是為了平衡短期 (如果伺服器故障,嘗試使用 QUIC 只是浪費資源) 和長期 (故障可能只是暫時,使用 QUIC 通常有益) 利益。

如果連續重試失敗,延遲時間就會增加。詳情請參閱 increaseBrokenServicePeriodExponentially

傳回
QuicOptions.Builder

用於鏈結的建構工具

setPreCryptoHandshakeIdleTimeoutSeconds

@QuicOptions.Experimental
public QuicOptions.Builder setPreCryptoHandshakeIdleTimeoutSeconds(
    long preCryptoHandshakeIdleTimeoutSeconds
)

設定尚未完成 SSL 交握的連線最長閒置時間。

傳回
QuicOptions.Builder

用於鏈結的建構工具

setRetransmittableOnWireTimeoutMillis

@QuicOptions.Experimental
public QuicOptions.Builder setRetransmittableOnWireTimeoutMillis(
    long retransmittableOnWireTimeoutMillis
)

設定線路上封包間的最大期望時間。

如果超過可透過有線網路重新傳輸的時間,Cronet 會使用人工流量探測網路品質。如果逾時時間較短,通常能更快發現路徑中斷或效能降低,但資源用量 (電池、數據) 也會較大。

傳回
QuicOptions.Builder

用於鏈結的建構工具