IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Interprétation javascript différente selon serveur


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Interprétation javascript différente selon serveur
    Bonjour,
    J'ai un souci dont je ne comprends même pas qu'il puisse arriver :
    J'ai codé un petit jeu basé sur AJAX : un moteur php qui gère le jeu, et une interface Javascript qui interroge le serveur par un XHR et affiche l'état du jeu pour chaque joueur
    L'ensemble fonctionne très bien sur mon serveur de test en local (EasyPHP), mais quand j'upload le tout chez mon hébergeur (ovh Cloud), il advient un truc curieux :
    Tout fonctionne très bien SAUF que les cercles sont tracés beaucoup trop grands sur le Canvas principal en Javascript : on dirait que la fonction scale s'applique mal à ces cercles
    Pire encore, sous chrome les cercles sont vides, et sous Firefox ils sont pleins (alors qu'en local ils sont toujours vides et à la bonne taille) !
    Pourtant les images sont correctement tracées sur le même canvas et après la même fonction scale
    Je ne comprends pas comment un changement de serveur peut influer sur l'exécution du Javascript sur le client
    J'ai vérifié les en-têtes http : ce sont les mêmes
    Est-ce que quelqu'un a une idée de comment il est possible que le serveur puisse avoir un effet sur l'exécution du Javascript / Canvas ??

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Commence par regarder en console les retours de ton ajax afin de repérer éventuellement les différences ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Le retour AJAX est le même (enfin, similaire, puisque les valeurs de retour sont différentes) ; c'est seulement une chaine de caractères (pas du xml) que je décode en javascript.
    Et de toutes façons, les dimensions des cercles sont des variables qui ne bougent pas. Dans le doute, j'ai quand même essayé de mettre des valeurs fixes, "en dur", et le problème reste le même.
    On dirait vraiment que la fonction d'échelle (scale de contexte2D de canvas) n'est pas traitée pareil quand le html (la page de base) est servi par un serveur ou l'autre, ce qui me parait impossible.
    D'ailleurs, au début du développement, je n'utilisais pas la fonction scale et je n'avais pas ces problèmes (mais je suis obligé de passer maintenant par cette fonction car les choses deviennent trop complexes à gérer par des formules).
    En plus, je pense que le problème vient bien d'un mauvais fonctionnement de la fonction scale, car ça pourrait déjà expliquer les cercles vides ou pleins, qui résulteraient d'une épaisseur de trait à une mauvaise échelle aussi.
    Même si, encore une fois, je ne comprends pas comment ça peut être causé par le serveur.
    A ce jour, j'ai triché en mettant l'image d'un rond, mais la solution ne me plait pas.
    Et puis j'aimerais bien comprends le problème, ne serait-ce que parce que ça cache peut-être un fonctionnement que je ne connais pas.
    Une autre idée ?

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Bonjour,

    Pouvez-vous nous montrer un exemple en ligne pour voir ce comportement inattendu ainsi que le code utilisé....

  5. #5
    Membre du Club Avatar de ViskashaEveillé
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2022
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2022
    Messages : 16
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    est-ce que vous utilisez un OS différent entre votre pc local (peut-être windows) et votre serveur ovh (linux?)

    Il arrive que vos fichiers de code puissent être interprétés différement quand vous changez d'OS (shebang, chemin, etc...)
    Mes Projets disponibles sur GIT

    Vous avez un projet, une question, une demande à me soumettre ? N'hésitez pas à me contacter ici.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Le client est toujours le même, sur le même PC windows 10 ; en fait, la situation est toujours exactement la même, seul le serveur change
    J'ai mis tous ça en ligne sur www.challengear.com (il faut deux navigateurs différents pour les joueurs)
    En testant le jeu, vous constaterez que les "balles", quand on tire, sont énormes, alors qu'en local, les balles sont toutes petites
    Le code qui trace les cercles est le suivant (fichier www.challengear.com/jvs/7-tracage.js : fonction tracer_tirs, lignes 203 à 208)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ctxZG.beginPath();
    $ctxZG.arc($xs[$i],$es[$i],$f_ltir,0,2*Math.PI);
    $ctxZG.closePath();
    $ctxZG.stroke();
    $ctxZG.fill();
    Avant d'appeler cette fontion, il y a les changements de contexte qui sont à mon avis en cause (lignes 51 à 54)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ctxZG.save();
    $ctxZG.translate($xCentre,$yCentre) ;
    $ctxZG.rotate(-$aOrient);
    $ctxZG.scale($eAffich,-$eAffich);
    Il n'y a vraiment rien de sorcier dans ce code
    Et encore une fois, comment se fait-il que le javascript soit interprété différemment selon le serveur qui a envoyer le fichier ...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    En local, ça donne ça (ne tenez pas compte des points roses, ils sont rajoutés en dur quand le serveur est 127.0.0.1) :
    Nom : captureenlocal.jpg
Affichages : 79
Taille : 166,1 Ko

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Oh my god ...
    Je viens de me rendre compte en postant mon message précédent qu'il y a bien une différence de fonctionnement quand je suis en local ... en 127.0.0.1
    J'affiche les 3 points de repère en rose (ligne 58 à 64)
    Je viens d'essayer de supprimer ce repère ... et le résultat en local devient le même que quand c'est servi par ovh
    J'ai honte là ...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Pour info :
    Pour l'affichage des trois points roses (donc quand le serveur était en 127.0.0.1), je définissais lineWidth à une valeur grande
    Et pour le traçage des "tirs" je définissais une lineWidth à 0 ... qui est une valeur non valide
    Je traçais donc mes tirs avec le lineWidth des trois points roses, mais seulement quand le serveur n'était pas 127.0.0.1
    Problème résolu

  10. #10
    Membre régulier
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Juillet 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Juillet 2016
    Messages : 75
    Points : 118
    Points
    118
    Par défaut Pas de honte à avoir
    Ouvrir un post sur un forum a (selon moi) plusieurs mérites (en plus de faire appel à des compétences) :

    1. prendre un peu de recul avec ton code, le temps de rédiger ton post
    2. formaliser exactement le problème et les conditions dans lesquelles il apparaît
    3. décrire le problème à des personnes qui n'en connaissent rien : cela te permet de vérifier la cohérence de la démarche effectuée jusque là
    4. avoir des avis extérieurs de personnes qui ne sont pas sur ce problème depuis des heures et en auront certainement une approche moins étroite (moins tunnelisée)
    C'est quand un homme voit un moustique posé sur un de ses testicules qu'il comprend que la violence ne peut pas résoudre tous les problèmes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/07/2011, 13h25
  2. Affichage différent selon le serveur web !
    Par Aspic dans le forum Général Conception Web
    Réponses: 20
    Dernier message: 10/09/2008, 19h58
  3. lien fichier javascript différent suivant serveur
    Par Nico36 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/09/2007, 12h10
  4. encodage différent selon serveur !
    Par dkmatt dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/05/2006, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo