Maison  >  Article  >  développement back-end  >  Client http : délai d'expiration plus rapide en l'absence de réseau

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

WBOY
WBOYavant
2024-02-11 12:09:09738parcourir

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)

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer