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

Conception Web Discussion :

Quelle solution pour une application web "temps réel"?


Sujet :

Conception Web

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Points : 34
    Points
    34
    Par défaut Quelle solution pour une application web "temps réel"?
    Yop tout le monde,

    J'aurais besoin de réaliser une application web "temps réel", càd une application ou des clients doivent recevoir des infos et balancer des requêtes à un serveur, un peu à la manière d'un chat, avec synchro en continu, et de bonnes perfs.
    Je sais pas trop vers quoi me tourner.
    Il y aura une bdd, ça c'est sûr. Mais après côté client : flash? ajax pourrait faire l'affaire? (jamais touché à flash de ma vie :/)
    Je vois que ça pour l'instant (en écartant les solutions exotiques style silverlight)
    C'est quoi le mieux pour mon besoin? Y a-t-il autre chose de plus pertinent?

    Merci d'avance et bonne soirée

  2. #2
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Je dirais ajax car il est fait pour ca mais c'est difficile de réponse dans connaitre ce que tu dois faire plus précisément.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    ok merci de ta réponse, de toute façon je vais faire mes tests on verra bien.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    j'ai un peu la même question pour un projet de jeu (2 joueurs) en ligne, ou la réponse de l'autre joueur doit être vue en temps réel (disons de l'ordre de la seconde).

    Je suis en train de faire des tests avec AJAX + PHP. Mon code se trouve ci-dessous, si cela peut vous servir. Une fois le code sur le serveur, j'ouvre 2 fenêtres vers test2.html, j'envoie un message dans la première fenêtre, puis dans la 2e (la première fois) -> le message s'affiche bien dans la 1ere. Quand je remets un message dans la 1ere, il s'affiche dans la 2e, etc.

    Bref, ça marche à peu près, mais le problème est que c'est encore trop lent: plusieurs secondes entre l'envoi du message et l'affichage dans la 2e fenêtre. Ca dépend peut-être de la charge de mon serveur ?

    J'ai vu sinon qu'il doit exister des solutions à base de "sockets" + applet java, mais je n'ai pas trouvé d'exemple simple.

    Jérôme


    test2.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <html>
    <head>
    <script type="text/javascript" src="./test2.js"></script>
    </head>
    
    <body>
    <table width="800" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td>
    <form id="formid">
    <input type="text" name="msg">
    </form>
    <a href="javascript:" onclick="sendMessage();">Envoyer</a>
    </td>
    </tr>
    <tr>
    <td id="answerid">
    </td>
    </tr>
    </table>
    </body>
    </html>
    test2.js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    function sendMessage()
    {
    	var msg = document.getElementById('formid').msg.value;
    	var xhr = getXhr();
    	xhr.onreadystatechange = function()
    	{
    		if(xhr.readyState == 4)
    		{
    			if(xhr.status == 200)
    			{
    				var output = xhr.responseText;
    				_write_display('answerid', output);
    			}
    			else
    			{
    				alert("status "+xhr.status);
    			}
    
    		}
    	}
    	xhr.open("GET","./test2_backend.php5?msg="+msg,true);
    	xhr.send(null);
    	_write_display('answerid', 'waiting...');
    }
    
    function getXhr()
    {
    	var xhr = null;
    	if(window.XMLHttpRequest)  xhr = new XMLHttpRequest();
    	else if(window.ActiveXObject)
    	{ 
    		try 
    		{
    			xhr = new ActiveXObject("Msxml2.XMLHTTP");
    		} 
    		catch (e) 
    		{
    			xhr = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    	}
    	else 
    	{ 
    		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    		xhr = false;
    	}
    	return xhr
    }
    
    function _write_display(id, text)
    {
    	if(document.getElementById(id)) {document.getElementById(id).innerHTML = text;}
    }
    test2_backend.php5:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    
    $filename  = dirname(__FILE__).'/test2.txt';
    
    $msg = isset($_GET['msg']) ? $_GET['msg'] : '';
    if ($msg != '')
    {
      file_put_contents($filename,$msg);
    }
    
    $currentmodif = $lastmodif = filemtime($filename);
    while ($currentmodif <= $lastmodif) // check if the data file has been modified
    {
      usleep(1000000); // sleep 1s to unload the CPU
      clearstatcache();
      $currentmodif = filemtime($filename);
    }
    
    echo(file_get_contents($filename));
    
    ?>

Discussions similaires

  1. Quelles technologies pour une application web
    Par scorbo dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 11/11/2014, 22h55
  2. Réponses: 11
    Dernier message: 24/06/2011, 13h08
  3. Quelle techno choisir pour une application web en décisionnel?
    Par chikhare dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 19/09/2009, 09h35
  4. Quelle distribution choisir pour une application WEB J2EE
    Par dj_f. dans le forum Distributions
    Réponses: 1
    Dernier message: 14/03/2008, 10h04

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