01-11-2013, 11:51 PM
Salut,
J'enregistrerai une notification dans la console déjà. Ensuite, si l'erreur et la requête le permette, j'en renvoie une nouvelle (par exemple, une erreur de latence réseau).
Sinon
* s'il s'agit d'une commande, j'informe explicitement l'utilisateur que cette commande n'est pas passé, et je lui propose de nouvelles options. Par exemple, si le joueur a lancé une attaque sur une ville, je l'informe qu'une erreur réseau n°X a empêché l'ordre d'être envoyé à son armée. Il peut alors: relancer l'ordre, changer l'ordre, abandonner cet ordre. Le "X" est un lien vers le détail complet de l'erreur.
* S'il ne s'agit pas d'une commande, c'est à dire s'il s'agit d'une requête AJAX qui n'a pas été explicitement demandée, alors je "grise" la zone où le résultat aurait du être affiché et je relance la requête (ça, c'est s'il y a déjà des données qui avaient été reçues avant, aka l'AJAX devait mettre ces données à jour donc je les grise pour indique que les données affichées datent un peu), soit je met un logo de chargement là où le résultat aurait du s'afficher.
Si l'erreur persiste, je retente.
Si les données affichées sont vraiment vieilles (j'ai fait plein d'essais AJAX et je n'arrive pas à mettre les données à jour car je n'ai pas de réponse valide), alors j'indique explicitement à l'utilisateur que ces données sont franchement vieilles (mais je ne l'empêche pas de continuer à jouer pour autant, il se peut que le joueur soit en train de réfléchir sur papier à la meilleure stratégie de jeu et qu'il ait donc coupé son 4G mobile pendant ce temps de réflexion).
TL;DR
Si l'utilisateur a demandé quelque chose, je lui réponds explicitement que ça a foiré et je lui propose de nouvelles options.
Si l'utilisateur n'a rien demandé (AJAX "background"), je ne l'informe pas, mais si besoin, j'indique que la page est un peu vieille (pas de pop-up si l'utilisateur n'en n'attends pas).
Il est inutile de dire juste "Une erreur a eu lieu.": la plupart des gens s'en foutent, ils attendent surtout les solutions pour corriger l'erreur.
Logger l'erreur peut être intéressant. En ce cas, je stockerai l'erreur en mémoire vive (aka, dans un tableau Javascript), et je l'enverrai via une autre requête AJAX. Si celle-ci échoue aussi, je le log dans cette mémoire tampon, et j'attends au moins une minute. Tu peux aussi stocker les erreurs javascript dans un cookie ou en local sur l'ordinateur client, et les envoyer à la prochaine requête "classique" (aka, visite de page, pas AJAX).
J'enregistrerai une notification dans la console déjà. Ensuite, si l'erreur et la requête le permette, j'en renvoie une nouvelle (par exemple, une erreur de latence réseau).
Sinon
* s'il s'agit d'une commande, j'informe explicitement l'utilisateur que cette commande n'est pas passé, et je lui propose de nouvelles options. Par exemple, si le joueur a lancé une attaque sur une ville, je l'informe qu'une erreur réseau n°X a empêché l'ordre d'être envoyé à son armée. Il peut alors: relancer l'ordre, changer l'ordre, abandonner cet ordre. Le "X" est un lien vers le détail complet de l'erreur.
* S'il ne s'agit pas d'une commande, c'est à dire s'il s'agit d'une requête AJAX qui n'a pas été explicitement demandée, alors je "grise" la zone où le résultat aurait du être affiché et je relance la requête (ça, c'est s'il y a déjà des données qui avaient été reçues avant, aka l'AJAX devait mettre ces données à jour donc je les grise pour indique que les données affichées datent un peu), soit je met un logo de chargement là où le résultat aurait du s'afficher.
Si l'erreur persiste, je retente.
Si les données affichées sont vraiment vieilles (j'ai fait plein d'essais AJAX et je n'arrive pas à mettre les données à jour car je n'ai pas de réponse valide), alors j'indique explicitement à l'utilisateur que ces données sont franchement vieilles (mais je ne l'empêche pas de continuer à jouer pour autant, il se peut que le joueur soit en train de réfléchir sur papier à la meilleure stratégie de jeu et qu'il ait donc coupé son 4G mobile pendant ce temps de réflexion).
TL;DR
Si l'utilisateur a demandé quelque chose, je lui réponds explicitement que ça a foiré et je lui propose de nouvelles options.
Si l'utilisateur n'a rien demandé (AJAX "background"), je ne l'informe pas, mais si besoin, j'indique que la page est un peu vieille (pas de pop-up si l'utilisateur n'en n'attends pas).
Il est inutile de dire juste "Une erreur a eu lieu.": la plupart des gens s'en foutent, ils attendent surtout les solutions pour corriger l'erreur.
Logger l'erreur peut être intéressant. En ce cas, je stockerai l'erreur en mémoire vive (aka, dans un tableau Javascript), et je l'enverrai via une autre requête AJAX. Si celle-ci échoue aussi, je le log dans cette mémoire tampon, et j'attends au moins une minute. Tu peux aussi stocker les erreurs javascript dans un cookie ou en local sur l'ordinateur client, et les envoyer à la prochaine requête "classique" (aka, visite de page, pas AJAX).