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

用於鏈結的建構工具