(24-02-2016, 03:32 PM)MadMass a écrit : Comment vous faites en mono-page si y'a une coupure de connexion sur une requête ajax par exemple ? Pour éviter que tout le js qui tourne bien parte en carafe ? ^^
(24-02-2016, 03:42 PM)niahoo a écrit : Bah tu affiches que la connexion a été perdue, et tu poll ton serveur pour voir quand elle est revenue et reprendre où tu en étais.+1
Pour le coup c'est plus sympa qu'un changement de page qui va juste tourner à vide 30 secondes (ou 0 selon le type de déconnexion) puis afficher une page d'erreur indiquant que le site est disponible.
(24-02-2016, 04:14 PM)Sephi-Chan a écrit : Les callbacks des appels ne sont simplement pas exécutés. A chacun de choisir une façon de le gérer. Par exemple, si on fait un jeu où on se déplace de case en case, on a souvent tendance à commencer le mouvement dès l'envoi de la requête, pour que ça paraisse plus rapide, il faut donc ici faire revenir le personnage à sa place initiale si on a pas de réponse du serveur dans les X secondes.
C'est exactement ce que je fais
Je fais de la prédiction en lançant l'anim du mouvement, et en cas d'erreur, j'ai un callback pour replacer le joueur à sa position. Après si tu perds vraiment la connexion... C'est comme me demander ce qu'il faut faire pour lire dans le noir... bin tu lis pas. Si tu veux jouer sur internet sans internet, bin tu joues pas?!^^
Xenos: recharger la page ça veux dire recréer tout le DOM, recharger tous les CSS (qui n'ont pas changé), recharger tous les scripts (qui n'ont eux non plus pas changé) + éventuellement réinitialisé de nombreux bind sur le dom concernant des events etc. Alors qu'en ne le faisant qu'une fois, c'est bien plus performant... tu gagnes un max de temps sur de l'aspect "technique" dont l'utilisateur n'a que foutre (et n'a même pas conscience d'ailleurs).
Si le réseau est lent et bien là aussi ça aurra des conséquences. Dans les jeux ont parle de lag... Ca veux dire qu'il y aura des lenteurs pour certains actions qui demande des choses au serveurs, c'est vrai. Mais c'est vrai pour n'importe quel jeux en ligne, y comprit pas par navigateur...
Enfin, pour en avoir fait, le XSL/XSLT me parait infiniment plus lourd (rien que dans la syntaxe) que l'envoi simple des données en JSON (qui de surcroit sont de facto transformé en objet JS directement utilisable).
Dans l'absolue, la seule chose qu'un client doit demander au serveur, c'est tout ce qu'il ne sait pas, donc la première fois c'est le JS qui permettra de créer le DOM selon sa navigation, et pour TOUTES les autres fois, il demandera uniquement les variables, les trucs qui changent et où seul le serveur fait autorité.
Soit tu les envois en texte brut avec un syntaxe que tu fais toi même, sois tu sérialises en JSON car c'est fait pour et directement traduisible en JS.
Du coup tu n'as pas besoin de faire travailler le serveur ET le réseau plus que ça...
Quel est l'utilité de faire faire au serveur, puis de le transférer par le réseau( qui passe peut être par la chine) une tel donnée :
Code :
<div id="character">
<div class="carac">
<div id="hp">100/100 <span class="icon-hp></span></div>
<div id="mp">200/200 <span class="icon-mp></span></div>
</div>
</div>
là ou un hash de donnée suffit : { hp: 100, hpmax: 100, mp: 200, mpmax:200 } ?
C'est juste débile dans l'absolue^^
Les seules données utilises sont celle que l'on a pas. La construction du dom peut etre factorisé par le JS de sorte de rendre bcp plus simple et rapide les échanges client-serveur. Mais bon, on dira que ça c'est ma religion à moi^^
Du coup, moi je ferais, pour reprendre l'exemple ci-dessus, un template JS: (plus le DOM qu'il comporte est gros, plus c'est justifié selon moi)
Code :
<div id="character">
<div class="carac">
<div id="hp"><%= @hp %>/<%= @hpmax %> <span class="icon-hp></span></div>
<div id="mp"><%= @mp %>/<%= @mpmax %> <span class="icon-mp></span></div>
</div>
</div>
et je l'appel en JS :
Code :
$.get 'ma/super/requete', (data)->
app.JST 'path/to/template', data
Ce qui me permet, en cas de baisse de PV, de demander un hash au serveur de type : { hp: 42 } après une action quelconque, et de pouvoir rafrech le template sans reload la page (on peut même optimiser en ne modifiant que l'endroit du DOM avec le nombre d'HP bien sur).
PS:
pour ce qui est de prouver la rapidité, amuse toi à naviguer :
https://fr.yahoo.com/ => click sur actualités par exemple
http://jepolitique.fr/ => click sur débats par exemple
Il n'y a même pas besoin d'utiliser firebug pour regarder le temps de chargement, la différence est tel que tu peux la ressentir de "visu"...
Dévotion, jeu multijoueur gratuit par navigateur de stratégie et de conquête
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne
Rapture Studio : créateur de divertissement pour tous
JePolitique.fr - débattons ensemble
JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir
Je Deviens Citoyen (Association à but non lucratif)
The Magic Institute, le jeu de magie médieval fantastique gratuit en ligne
Rapture Studio : créateur de divertissement pour tous
JePolitique.fr - débattons ensemble
JécrisLaConstitution.fr - ne laissons pas les Hommes aux pouvoirs écrire les règles du pouvoir
Je Deviens Citoyen (Association à but non lucratif)