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 :

Affichage toutes les secondes peu sexy


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut Affichage toutes les secondes peu sexy
    Bonjour,

    Dans mon projets je dois rafraichir un certain nombre de données toutes les secondes.
    Ce qui me derrange c'est que l'affichage est assez peu sexy du coup, comment pourrais je rendre l'llusion que mes données ne se raffraichissent pas toutes les secondes.
    Comment mettre un delay aleatoires sur tous le flots de données que je recois ? Pour qu'on est l'impression que les données arrivent en flux continu.

    Merci pour vos conseils
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  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 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Pour commencer, un rafraichissement toutes les secondes ... c'est bien court comme délai, en fonction du réseau et donc du débit, je ne suis pas sur qu'un ajax puisse à tous les coups répondre dans la seconde !

    Ensuite un simple setTimeout sur l'affichage avec un délai randomifié.
    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
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Je n'utilise pas Ajax mais les websockets, donc de ce cote la il n'y a aucun soucis.
    Je croyais que un setTimeout etait deconseillé en Javascript
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  4. #4
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    EDIT : Tu utilises déjà les WebSockets, oublie donc mon message que j'écrivais pendant ta réponse

    L'ère du "long polling" (rafraîchissement toutes les X secondes via AJAX) est terminée.
    Pour un besoin de ce genre, renseigne toi sur les WebSockets.

    En (très) gros :

    Ajax (support tout navigateur) : request HTTP -> response. Création d'une connexion au serveur, envoie de headers, attendre la réponse du serveur, fermeture de la connexion.

    Long polling via AJAX (support tout navigateur) : request HTTP -> wait -> response. Même création que ci-dessus, sauf que tu maintiens une connexion (keep-alive) pour une courte durée. Après tu tombes dans un timeout ou fin de fichier (eof) et le client doit se reconnecter au serveur.

    WebSockets (très bien supporté, sauf IE9-) : client <> serveur. ce n'est plus du HTTP, sauf pour le premier contact ("handshake") entre le client et le serveur. C'est une connexion TCP bi-directionnel, donc une fois le client connecté, il reste connecté et le serveur peut envoyer (push) des données aux clients. C'est clairement ce que je te recommande pour ton besoin.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par topolino
    Je croyais que un setTimeout etait deconseillé en Javascript
    Il faut toujours se méfier de ses croyance.

    Ensuite, si tu utilises les websockets, pourquoi actualises-tu toutes les secondes et pas quand les valeurs sont modifiées ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Je fais un terminal financier, il s'agit de millers d'update par seconde, le browser ne le supporte pas par rapport a une appli native. Il a fallu faire des choix.
    Tous les updates sont envoyés en 1 fois toutes les secondes.
    Quand je vois mes 200 instruments se raffraichir tous en meme temps, cela fait assez moche.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  7. #7
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Pour que cela fasse moins moche (même si je ne suis pas sûr que cela soit très pertinent pour une application financière), tu peux prioriser les rafraîchissements en fonction du type de données.

    Pour les informations jugées les plus importantes et volatiles, tu peux faire un rafraichissement toutes les secondes voire toutes les demi-secondes.
    Pour d'autres informations moins cruciales à suivre en temps réelles, tu peux opter pour une fréquence plus faible.

    Cela permettra à l'attention de l'utilisateur d'être attirée vers les données importantes car changeantes.
    Tutoriels et FAQ TypeScript

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Bonjour,
    comment est réalisée ta mise à jour, à grand coup de innerHTML ou à petite dose de textContent ?

  9. #9
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Donner l'illusion que ? Ajouter des délais aléatoires ? C'est un spectacle de magie ou une vraie application ?
    One Web to rule them all

  10. #10
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    J'utilise les textcontent.

    Je ne demande pas de juger pourquoi je désire avoir ce résultat, mais d'essayer de me donner des conseils sur comment le faire, je demande un avis technique et non fonctionnelle.

    Je vais essayer le setTimeOut avec un delay aleatoire en fonction du nombre d'instruments que je monitore.

    Je vous tiens au courant.

    Merci à vous.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    ...du nombre d'instruments...
    la notion d'instrument m'échappe qu'est ce ?

  12. #12
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Pardon, un instrument == un symbol == EUR.
    EUR, GBP, CAD, GOOG.... ce sont des instruments. Pour une question de performance et de bande passante, nous avons une conflation / delay des données et nous les envoyons toutes en meme temps toute les secondes.

    Pour éviter l'effet flash toute les secondes qui déplaît fortement auxutilisateurs, j'aimerai les afficher de facon plus sexy.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  13. #13
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Dans ce cas le symbole n'a pas besoin d'être ré-affiché, c'est une "constante" écran, il ne faut ré-afficher que la valeur non ?

  14. #14
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Et si la valeur en elle-même ne change pas, il est préférable également de ne pas rafraîchir.
    Tutoriels et FAQ TypeScript

  15. #15
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Oui.

    Tous les symbols sont dans un tableau avec plusieurs colonnes (Bid, Ask, Last, Change.....)
    On me renvoie que les valeurs qui ont changés, donc je dois mettre à jour les colonnes des symbols qui ont changés.
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  16. #16
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 699
    Points
    8 699
    Billets dans le blog
    43
    Par défaut
    Comme tu as une arrivée de données par paquet, pour atténuer l'effet "flash", tu peux simplement rafraîchir les valeurs de façon séquentielle avec un délai d'une fraction de seconde entre chaque rafraîchissement de valeur.

    Ca fera plus un effet "cascade" que "flash".
    Tutoriels et FAQ TypeScript

  17. #17
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 955
    Points : 44 103
    Points
    44 103
    Par défaut
    Une autre technique consiste à travailler avec 2 plans, un plan(#0) qui est affiché et un plan(#1) que l'on modifie. Quand le plan(#1) est modifié on l'affiche et on fait les modifications sur le plan(#0) et ainsi de suite. (jamais testé en javascript)

Discussions similaires

  1. Client/Serveur : affichage tout les x secondes.
    Par NutellaPiou dans le forum Langage
    Réponses: 6
    Dernier message: 29/01/2009, 11h23
  2. Mise à jour d'un champ toutes les secondes
    Par mathilde50 dans le forum Access
    Réponses: 3
    Dernier message: 13/10/2008, 00h14
  3. definition d'une tache qui s'execute toutes les secondes
    Par Mokhtar BEN MESSAOUD dans le forum Administration système
    Réponses: 3
    Dernier message: 07/08/2007, 07h19
  4. Réponses: 2
    Dernier message: 20/04/2007, 12h48
  5. changer la couleur de mon Form1 toutes les secondes
    Par stacker_junior dans le forum C++Builder
    Réponses: 9
    Dernier message: 10/05/2006, 19h36

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