第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

iOS 和 Go - 使用 NSURLSession 保持活動狀態(tài)

iOS 和 Go - 使用 NSURLSession 保持活動狀態(tài)

Go
Qyouu 2021-10-04 16:14:57
在我的 iOS 應(yīng)用程序中,我有一個(gè)從服務(wù)器獲取結(jié)果的搜索功能。當(dāng)用戶更新他們的查詢時(shí),搜索會更新,因此這會導(dǎo)致連續(xù)發(fā)出多個(gè)請求。所以我的問題是,如何確保在這些連接上使用 TCP keep-alive?我想盡可能減少延遲,因此在第一個(gè)請求之后保持連接并在后續(xù)請求中重用連接非常重要。我正在使用 NSURLSession,我聽說它默認(rèn)使用 keep-alive,但我怎么知道呢?在服務(wù)器上記錄請求顯示每個(gè)連續(xù)請求之間沒有區(qū)別,但我不希望僅從標(biāo)頭信息中看到任何變化。這里有什么幫助嗎?我在我的服務(wù)器上使用 Go,所以它可能也需要在該端進(jìn)行一些額外的配置。
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

我相信您將 TCP 保持連接與 HTTP 保持連接(持久連接)混淆了。這些是不相關(guān)的概念。從您的問題來看,您的意思可能是 HTTP 持久連接。

在 HTTP/1.1 中,持久連接是默認(rèn)設(shè)置NSURLSession,幾乎每個(gè) HTTP/1.1 客戶端都使用它。你必須要求關(guān)閉它們。您可以檢查一個(gè)Connection: close在HTTP標(biāo)頭,或者在服務(wù)器端,您可以檢查Close的領(lǐng)域http.Request。但我相信你會得到持久的連接。這意味著您不必為每個(gè)請求重新協(xié)商 TLS 隧道(或至少是 TCP 三向握手)。(盡管如果您發(fā)出并行請求,仍然需要協(xié)商多個(gè)連接。HTTP/1.1 一次只能處理一件事,并且NSURLSession會嘗試使用連接池來提高響應(yīng)時(shí)間。)

TCP keep-alives 是完全不同的事情。它會定期向另一端發(fā)送“ping”以確保它仍然可以訪問。有很多方法可以讓您失去網(wǎng)絡(luò)連接,并且直到您下次嘗試通信時(shí)才知道,通常的癥狀是連接掛起,您需要超時(shí)。理論上,TCP keep-alive 只是發(fā)現(xiàn)這一點(diǎn)的工具,但我?guī)缀鯊奈窗l(fā)現(xiàn)它實(shí)用。很難正確配置(尤其是在 Cocoa 中)。您幾乎總是需要為您的應(yīng)用程序構(gòu)建更高級別的“ping”功能,而不是依賴于此。

但是把它解決你的問題,HTTP/1.1 可能對你來說很好,但是你需要仔細(xì)管理你的響應(yīng)。如果你對每封信都提出一個(gè)新的請求并發(fā)回大量的回復(fù),那么這會很糟糕。您將讓所有連接池忙于下載您要扔掉的東西。你需要首先關(guān)注好的算法。至少,您可能只想一次發(fā)送幾個(gè)結(jié)果,并在您的 API 中提供“分頁”方法,以便為同一搜索請求更多結(jié)果。


查看完整回答
反對 回復(fù) 2021-10-04
  • 2 回答
  • 0 關(guān)注
  • 230 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號