Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1109 connectés 

  FORUM HardWare.fr
  Programmation
  Langages fonctionnels

  Page web temps réel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Page web temps réel

n°2346317
matheo265
Posté le 18-02-2020 à 14:19:16  profilanswer
 

Bonjour tout le monde  :hello:  
 
Pour un projet client, j'ai besoin de faire une page web (serveur local) sur laquelle sont référencées toutes les personnes présentes à un moment T dans des locaux, avec un chrono indiquant le temps de présence. Cette page pourra être consultée par plusieurs personnes en même temps.
 
Chaque personne "badgera", et aussitôt elle devra apparaître sur la page et le compteur sur la ligne correspondant se lancera. Dès qu'elle badgera à nouveau elle disparaîtra aussitôt.
 
J'ai pensé à plusieurs idées, mais j'ai peur que ça soit trop gourmand ou trop lourd ou pas adapté...
 

  • Idée 1 : utiliser $.ajax ou $.get en jquery afin de récupérer toutes les secondes la liste dans la bdd (peut-être fatiguant pour le réseau et/ou le serveur de traiter des requêtes toutes les secondes ?),


  • Idée 2 : créer un serveur socket en PHP pour faire remonter, toutes les secondes, la liste issues de la bdd à tous les clients connectés (je ne suis pas sûr que les sockets soient prévus pour ce genre de traitement ?).


Qu'en pensez-vous ? Et vous, par quel bout prendriez-vous un tel projet ?
 
Merci pour vos retours  :jap:

mood
Publicité
Posté le 18-02-2020 à 14:19:16  profilanswer
 

n°2346318
rufo
Pas me confondre avec Lycos!
Posté le 18-02-2020 à 14:56:39  profilanswer
 

Je pense qu'ajax est plus indiqué (get de jquery, c'est du ajax :o). Par contre, t'es pas obligé de faire toutes les secondes, je pense. Un timer toutes les 5s suffirait probablement. Y'a combien de personne dans ton bâtiment ?
Après, tu peux faire un truc plus subtile : un flag dans un champ de la BD qui indique que la situation a changé (état des pièces avec les personnes dedans). Dès qu'une MAJ est faite, ça passe à 1 ce flag. Ta page web, via ajax, va lire cette variable. Si elle est à 0, rien n'est mis à jour car pas de changement. Si elle est à 1, ajax récupère la liste des personnes/pièce et met à jour l'affichage puis passe à 0 le flag.
Du coup, dans un grand nb de cas, ton script ajax va juste récupérer un 0, donc charge très faible pour le réseau. Et dans les cas où le flax vaut 1, là, y'aura plus de données mais ça sera ponctuel j'imagine. Après, ça dépend du nb de personnes et du nb de pièces.
Pour être plus fin, tu peux faire un flag par pièce pour ne transférer que les personnes des pièces qui ont changé. Ca fait toujours une seule interrogation par ajax mais le script php, lui, en fonction des flags, va renvoyer par pièce qui a changé, la liste des personnes et javascript/ajax se débrouillera pour mettre à jour l'affichage. Pour le format des données, à voir si tu fais du json qu'il faudra parser et injecter dans ta page web en html ou si ton PHP te renvoie direct du html que tu n'auras plus qu'à injecter au bon endroit dans la page web.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2346319
matheo265
Posté le 18-02-2020 à 15:03:37  profilanswer
 

Merci Rufo pour ton retour. Mes données seront renvoyées au format json, mais c'est pas le traitement de ces dernières qui va avoir beaucoup d'impact. Mon interrogation était effectivement plus sur la transaction client/serveur et tu as apporté une idée intéressante que je vais étudier  :p

n°2346320
rufo
Pas me confondre avec Lycos!
Posté le 18-02-2020 à 16:33:18  profilanswer
 

Ben la taille des données json, c'est pas à négliger, d'une part en terme de délai de transmission client/serveur (même si tu es en local, le LAN a un débit max, surtout si y'a des VLAN avec de la QoS), mais après, en terme de parsing et traitement à effectuer. Si t'as 10 noms de personnes ou t'en a 1000, ça va pas être le même délai. Du coup, si tu fais du polling toutes les secondes et que ton délai de transfert et traitement fait 1s ou plus, ton appli va vite être en galère avec une file de traitement qui va augmenter sans jamais se vider.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2346322
matheo265
Posté le 18-02-2020 à 16:37:35  profilanswer
 

Pas d'impact car il s'agit au pire du pire de 40 lignes composées d'un nom, d'un prénom et d'un numéro.

n°2346327
pluj
Posté le 18-02-2020 à 19:48:57  profilanswer
 

Puisque c'est posté dans langages fonctionnels, j'aurais bien proposé Elixir + framework phoenix + phoenix_live_view mais j'imagine qu'il s'agit là d'une erreur vu les technos évoquées ?
 

  • Idéal pour du temps réel avec ses processus (pas système, de la VM Beam)
  • Phoenix implémente les websockets et fournit Presence pour traquer qui est en ligne
  • Avec phoenix_live_view (même si c'est encore en beta), la page (tout ou partie) est mise à jour en temps réel (les modifications sont poussées via websocket notamment)


Message édité par pluj le 18-02-2020 à 19:55:59
n°2346336
matheo265
Posté le 19-02-2020 à 08:06:45  profilanswer
 

Je ne connais ni l'un ni l'autre, et même si je suis toujours demandeur d'apprendre, j'ai peur que les contraintes imposés par le client ne me permettent pas de "maitriser" tout ça à temps  :sweat:  
 
Mais au final l'idée que j'ai retenu est en partie en lien avec ton post puisque je vais m'orienter vers des websocket. Pourquoi cette solution ? Et bien simplement car la partie "badge" fonctionne sous Android. Je vais donc développer un applicatif qui se connecte au server socket (qui sera développé en php). Dès qu'un client badgera, j'enverrai l'info via le socket et elle sera automatiquement diffusée à tous les clients web.
 
Cette solution me paraît la plus simple et la plus accessible (pour moi tout du moins  :ange: ).
 
Merci pour vos retours  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Langages fonctionnels

  Page web temps réel

 

Sujets relatifs
mousover java sur plusieurs éléments en même tempsDonnées en temps réel
Site one page, bootstrap 4 et validation PHPAfficher flux http dans page html
Erreur Excerpt - Impossible d'enregistrer une page du thèmeMettre en place la mystérieuse page "One More Step" avec reCaptcha
Fond arrière plan / page saisie mot de passeComment trouver la page admin d'un site?
afficher contenu d'un dossier FTP sur une pagey'a t'il moyen de mettre une page a jours en temps réel?
Plus de sujets relatifs à : Page web temps réel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR