2009-07-23 11 views
0

Je travaille sur la construction d'un système de messagerie basé sur AJAX. L'idée est que le client appelle le serveur tous les X secondes pour obtenir les derniers messages et d'autres informations cruciales. L'application dépend très fortement de la transmission de ces données au client. Je l'ai testé sur toutes sortes de connexions et tout semble fonctionner parfaitement. Au cours d'un test de démonstration, nous avons observé que certains clients montraient du texte «indéfini» à des endroits où les informations du serveur étaient supposées être affichées. Ce genre de me dit que la réponse du serveur est coupée ou des choses comme ça qui ont provoqué l'étouffement du script java.Traitement des clients avec une connexion lente

Il semble que la seule chose commune parmi les clients qui ont signalé le problème est qu'ils sont derrière une connexion lente. Et environ 20 navigateurs ont été ouverts sur une douzaine de machines différentes et tous utilisant le même commutateur.

La ligne de fond est qu'il semble être problème avec les clients avec une connectivité très lente. J'ai défini l'heure de l'appel AJAX pour correspondre à la fréquence à laquelle ces demandes sont envoyées. Pour l'instant ce délai et la minuterie pour envoyer des appels est de 5 secondes. La charge utile de réponse est seulement 150-160 octets.

En supposant que cela pose problème avec une connexion lente et un timeout, quelles seraient les meilleures pratiques et stratégies pour gérer ce genre de situation?

Merci

Répondre

1

Ce délai semble trop court pour ce scénario. Augmentez le délai d'attente à 10-15 secondes et n'envoyez pas la deuxième demande si la première n'est pas encore retournée. La taille du contenu peut être très petite, mais c'est un problème de latence.

1

Même avec une bonne connexion, il y a toujours un risque de panne; donc, vous avez définitivement à faire face à l'affaire "d'échec"; c'est-à-dire, n'affiche pas "undefined".

Vous pouvez imaginer un système qui "échouerait silencieusement" pendant peut-être une minute (les données ne seront pas mises à jour sur la page, mais vous ne le dites pas à l'utilisateur).

Et si cela échoue plus longtemps, vous affichez un message du genre "vous avez un problème de connectivité, il peut y avoir quelque chose qui ne va pas, l'application ne fonctionnera pas correctement sans connexion Internet".

(Ce cas peut se produire assez souvent si les utilisateurs utilisent le wifi, ou une connexion à base mobile)

0

Deuxième demande n'est pas envoyé jusqu'à ce premier complète. Cette partie est déjà prise en charge. Je pense que l'augmentation du temps d'arrêt sera un changement que je peux faire. Ce qui est très étrange, c'est que l'affichage ne montrera "indéfini" que si l'appel a réussi et que l'exécution a atteint le point de réglage du texte pour cet élément HTML. C'est la partie que je ne comprends pas. J'ai essayé de retourner des chaînes nulles du serveur même celles qui sont traduites en chaîne vide du côté client et dans le pire des cas, elles finissent par afficher des chaînes vides, ce qui est le comportement attendu de l'application si certaines conditions ne correspondent pas il devrait effacer les valeurs affichées.

0

Il serait utile d'utiliser un outil dans votre environnement de développement qui peut simuler des connexions lentes et simuler des connexions à latence élevée. Cela vous permettra de reproduire l'erreur dans votre environnement de développement et de commencer à observer le comportement tel qu'il se produit.

Mon outil opensource DonsProxy peut vous aider, mais il existe d'autres outils.

Questions connexes