Maison > développement back-end > Golang > le corps du texte

Client http : délai d'expiration plus rapide en l'absence de réseau

WBOY
Libérer: 2024-02-11 12:09:09
avant
713 Les gens l'ont consulté

Client http : délai dexpiration plus rapide en labsence de réseau

L'éditeur PHP Xinyi vous présente aujourd'hui un outil appelé "Client http : délai d'attente plus rapide lorsqu'il n'y a pas de réseau". Dans un environnement instable ou sans réseau, un délai d'attente long peut entraîner une mauvaise expérience utilisateur. Cet outil client http peut aider à résoudre ce problème. Il optimise le mécanisme de délai d'attente pour accélérer le délai d'attente lorsqu'il n'y a pas de réseau, améliorant ainsi la vitesse de réponse de l'application et l'expérience utilisateur. Jetons un coup d'œil aux fonctions spécifiques et à l'utilisation de cet outil !

Contenu de la question

Lors d'une requête http get in go, même s'il n'y a pas de connexion réseau, il attendra le délai d'attente complet avant de renvoyer une erreur.

Je pense qu'en interne, il sait que l'erreur a échoué très rapidement ; je veux que l'erreur se propage le plus rapidement possible plutôt que d'attendre un délai d'attente. Je veux qu'il essaie pendant 20 secondes pendant que le réseau est présent mais lent. Comment configurer un client avec ce comportement ?

Voir le code du problème :

var client = &http.Client{
    Timeout: time.Second * 20,
}

response, err := client.Get(url)
Copier après la connexion

Si c'est important, j'utilise gomobile et il fonctionne sur l'émulateur iOS.

Solution de contournement

La réponse ici est très simple : en interne, Golang peut savoir et sait quand il n'y a pas de réseau et propage l'échec rapidement sans attendre le délai d'attente de 20 secondes. Rien n'est envoyé sur le réseau et il n'y a pas d'attente. Tout semble fonctionner correctement dans Go et aucune modification de l'exemple de code n'est requise.

Le problème continue de se reproduire, mais uniquement dans le simulateur iOS. Cela semble être un problème spécifique à la façon dont le simulateur iOS mappe les connexions au système d'exploitation hôte. Je ne sais pas s'il s'agit d'un problème de longue date ou d'un problème ponctuel avec mon couplage MacOS/émulateur. Sur les MacOS hôtes et les vrais appareils iOS, cela fonctionne bien, lorsqu'il n'y a pas d'interface réseau, le délai d'attente expire immédiatement.

Aucune demande supplémentaire n'est nécessaire car il s'agit simplement d'un autre chemin vers la même conclusion, ce qui augmente la probabilité d'autres échecs. Peut aider à distinguer les problèmes de réseau des problèmes liés à un service spécifique, ou à obtenir un indicateur plus rapide du véritable état du réseau (une fois que l'interface réseau connectée existe).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!