php小編新一今天為大家介紹一款名為“http客戶端:無網絡時更快的超時”的工具。在網絡不穩定或無網絡環境下,超時時間過長可能會導致用戶體驗不佳。而這款http客戶端工具可以幫助解決這個問題,它通過優化超時機制,使得在無網絡的情況下,超時時間更加快速,從而提高了應用的響應速度和用戶的體驗。讓我們一起來了解一下這款工具的具體功能和使用方法吧!
問題內容
當在 go 中發出 http get 請求時,即使沒有網絡連接,它也會在返回錯誤之前等待完整的超時時間。
我認為在內部它很快就知道它失敗了;我希望該錯誤盡快傳播,而不是等待超時時間。我確實希望它在網絡存在但速度很慢時嘗試 20 秒。我如何設置具有這種行為的客戶端?
查看問題的代碼:
var client = &http.Client{ Timeout: time.Second * 20, } response, err := client.Get(url)
登錄后復制
如果重要的話,我正在使用 gomobile 并且它在 ios 模擬器上運行。
解決方法
這里的答案非常簡單:golang 內部可以并且確實知道何時沒有網絡,并及時傳播故障,而無需等待 20 秒超時。網絡上不會發送任何內容,也無需等待。 Go 似乎一切正常,并且不需要對示例代碼進行任何更改。
該問題仍然會持續重現,但僅限于 iOS 模擬器。這似乎是一個特定于 iOS 模擬器如何將連接映射到主機操作系統的問題。不確定這是一個長期存在的問題,還是我的 MacOS/模擬器配對中的一次性問題。在主機 MacOS 和真實 iOS 設備上,它可以正常工作,當沒有網絡接口時,它會立即超時。
不需要額外的請求,因為這只是得出相同結論的另一條途徑,這增加了其他失敗的可能性??赡苡兄趨^分網絡問題與特定服務的問題,或者更快地獲得真實網絡狀態的指示器(在連接的網絡接口存在之后)。