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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    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

  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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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 éprouvé
    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
    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

  4. #4
    Membre Expert
    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 : 38
    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
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    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 éprouvé
    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
    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.

  7. #7
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 424
    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 424
    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

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