QuicOptions.Builder

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!

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

QuicOptions.Builder!
@QuicOptions.Experimental
delayJobsWithAvailableSpdySession(
    delayJobsWithAvailableSpdySession: Boolean
)

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

QuicOptions.Builder!

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

QuicOptions.Builder!

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

QuicOptions.Builder!
@QuicOptions.Experimental
increaseBrokenServicePeriodExponentially(
    increaseBrokenServicePeriodExponentially: Boolean
)

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

QuicOptions.Builder!

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

QuicOptions.Builder!

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

QuicOptions.Builder!
setHandshakeUserAgent(handshakeUserAgent: String!)

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

QuicOptions.Builder!
@RequiresApi(value = VERSION_CODES.O)
setIdleConnectionTimeout(idleConnectionTimeout: Duration)

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

QuicOptions.Builder!
setIdleConnectionTimeoutSeconds(idleConnectionTimeoutSeconds: Long)

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

QuicOptions.Builder!
setInMemoryServerConfigsCacheSize(inMemoryServerConfigsCacheSize: Int)

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

QuicOptions.Builder!
@QuicOptions.Experimental
setInitialBrokenServicePeriodSeconds(
    initialBrokenServicePeriodSeconds: Long
)

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

QuicOptions.Builder!
@QuicOptions.Experimental
setPreCryptoHandshakeIdleTimeoutSeconds(
    preCryptoHandshakeIdleTimeoutSeconds: Long
)

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

QuicOptions.Builder!
@QuicOptions.Experimental
setRetransmittableOnWireTimeoutMillis(
    retransmittableOnWireTimeoutMillis: Long
)

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

公開函式

addAllowedQuicHost

fun addAllowedQuicHost(quicHost: String!): QuicOptions.Builder!

將主機加入 QUIC 許可清單。

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

addClientConnectionOption

@QuicOptions.QuichePassthroughOption
fun addClientConnectionOption(clientConnectionOption: String!): QuicOptions.Builder!

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

詳情請參閱 addConnectionOption

addConnectionOption

@QuicOptions.QuichePassthroughOption
fun addConnectionOption(connectionOption: String!): QuicOptions.Builder!

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

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

addEnabledQuicVersion

@QuicOptions.QuichePassthroughOption
fun addEnabledQuicVersion(enabledQuicVersion: String!): QuicOptions.Builder!

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

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

addExtraQuicheFlag

@QuicOptions.QuichePassthroughOption
fun addExtraQuicheFlag(extraQuicheFlag: String!): QuicOptions.Builder!

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

build

fun build(): QuicOptions!

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

closeSessionsOnIpChange

@QuicOptions.Experimental
fun closeSessionsOnIpChange(closeSessionsOnIpChange: Boolean): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

delayJobsWithAvailableSpdySession

@QuicOptions.Experimental
fun delayJobsWithAvailableSpdySession(
    delayJobsWithAvailableSpdySession: Boolean
): QuicOptions.Builder!

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

enableTlsZeroRtt

@QuicOptions.Experimental
fun enableTlsZeroRtt(enableTlsZeroRtt: Boolean): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

goawaySessionsOnIpChange

@QuicOptions.Experimental
fun goawaySessionsOnIpChange(goawaySessionsOnIpChange: Boolean): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

increaseBrokenServicePeriodExponentially

@QuicOptions.Experimental
fun increaseBrokenServicePeriodExponentially(
    increaseBrokenServicePeriodExponentially: Boolean
): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

retryWithoutAltSvcOnQuicErrors

@QuicOptions.Experimental
fun retryWithoutAltSvcOnQuicErrors(retryWithoutAltSvcOnQuicErrors: Boolean): QuicOptions.Builder!

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setCryptoHandshakeTimeoutSeconds

@QuicOptions.Experimental
fun setCryptoHandshakeTimeoutSeconds(cryptoHandshakeTimeoutSeconds: Long): QuicOptions.Builder!

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setHandshakeUserAgent

fun setHandshakeUserAgent(handshakeUserAgent: String!): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setIdleConnectionTimeout

@RequiresApi(value = VERSION_CODES.O)
fun setIdleConnectionTimeout(idleConnectionTimeout: Duration): QuicOptions.Builder!

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setIdleConnectionTimeoutSeconds

fun setIdleConnectionTimeoutSeconds(idleConnectionTimeoutSeconds: Long): QuicOptions.Builder!

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

詳情請參閱 RFC 9114 的 5.1 節

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setInMemoryServerConfigsCacheSize

fun setInMemoryServerConfigsCacheSize(inMemoryServerConfigsCacheSize: Int): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setInitialBrokenServicePeriodSeconds

@QuicOptions.Experimental
fun setInitialBrokenServicePeriodSeconds(
    initialBrokenServicePeriodSeconds: Long
): QuicOptions.Builder!

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

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setPreCryptoHandshakeIdleTimeoutSeconds

@QuicOptions.Experimental
fun setPreCryptoHandshakeIdleTimeoutSeconds(
    preCryptoHandshakeIdleTimeoutSeconds: Long
): QuicOptions.Builder!

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具

setRetransmittableOnWireTimeoutMillis

@QuicOptions.Experimental
fun setRetransmittableOnWireTimeoutMillis(
    retransmittableOnWireTimeoutMillis: Long
): QuicOptions.Builder!

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

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

傳回
QuicOptions.Builder!

用於鏈結的建構工具