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 :

Push Javascript avec serveur PHP


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Push Javascript avec serveur PHP
    Bonjour à tous,

    En ce moment, je réalise un petit jeu RPG à cases avec un serveur PHP et un client JavaScript utilisant jQuery.

    Je me heurte à un problème : pour récupérer par exemple les positions des autres joueurs, et ainsi permettre aux joueurs de se voir interagir sur la map entre eux, je dois passer par une récupération AJAX de la liste des positions des joueurs connectés toutes les n secondes.

    Ceci interroge un fichier PHP qui liste les joueurs connectés, récupère toutes leurs positions et le renvoie sous format JSON.

    C'est lourd pour mon petit serveur perso chez OVH. Et surtout, ca lui donne souvent du travail pour rien (une requête est envoyée en l'air si personne n'avait bougé...).

    On m'avait proposé des alternatives : passer par un serveur "push".
    J'ai essayé par exemple BeaconPush ou encore PubNub, des services en ligne.

    J'aimerai maintenant pouvoir passer par un serveur à moi (mon ordinateur par exemple). J'aimerais avoir le schéma suivant :

    - Quand un joueur se déplace, le serveur PHP envoie la nouvelle position à mon serveur
    - Mon serveur push la nouvelle position au client javascript
    - Le client réceptionne les nouvelles coordonnées et met à jour la position de ce joueur sur la map.

    En résumé, je cherche donc à installer sur mon ordinateur un serveur pour pouvoir recevoir des données de mon serveur PHP mutualisé et les push au client JavaScript.

    En connaissez-vous ?
    Ou me conseillez-vous autre chose ?

    Merci d'avance pour votre aide et vos conseils !

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut,

    tu peux monter un serveur web sur ta bécane A.
    Le serveur ovh appel ta page web de A avec en paramètres les positions des joueurs ayant bougé.
    Ta bécane met à jour ses infos.

    Chaque joueur récupère la position des autres par ajax sur ta bécane.

    Il y a moyen de se faire plaisir avec les websockets, mais je connais pas du tout l'avancement. En revanche, c'est typiquement le pull (coté client) dans lequel tu es

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    En effet, ca peut être une bonne solution pour commencer, mais ce n'est pas durable, car il y a toujours des requêtes dans le vent (sauf que la c'est moi qui vais payer l’électricité )

    Plus sérieusement, j'ai une préférence pour le push car c'est vraiment tu temps réel et pas de l'actualisation toutes les 5 secondes. Je regardai à l'instant http://www.ape-project.org/

    Ca m'a l'air très intéressant mais je ne sais pas comment est fait le serveur, apparemment c'est du C, mais je n'ai jamais tapé une ligne de C...

    Sinon j'ai vu node.js, mais je ne vois pas, dans tous les cas, comment les lier à mon serveur PHP

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Il n'existe pas des serveurs tout faits qui reçoivent des sockets et push ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    re,

    je viens de faire mumuse (stupidement) avec node, ca fait entre autre ce que tu désires.
    Jor ton client ouvre une socket avec le serveur, côté serveur, tu peux pusher quand tu le désires, et côté client, tu récupères l'info quand le serveur push.

    Ca donne un code très simple genre côté client :
    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 src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io.connect('http://localhost');
      socket.on ('connect', function (data) {
        console.log('connected');
        socket.emit('getPosition');
      });
      socket.on('updatePosition', function(data){
        console.log(data);
      });
    </script>
    <style type="text/css">
    </style>
    </head>
    <body>
    <div id="output">
     
    </div>
    </body>	
    </html>
    et côté serveur :
    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
    var app = require('http').createServer(handler)
      , io = require('socket.io').listen(app)
      , fs = require('fs')
     
    app.listen(80);
     
    function handler (req, res) {
      fs.readFile(__dirname + '/index.html',
      function (err, data) {
        if (err) {
          res.writeHead(500);
          return res.end('Error loading index.html');
        }
        res.writeHead(200);
        res.end(data);
      });
    }
    io.sockets.on('connection', function (socket) {
      socket.on('getPosition', function (data) {
        pushData();
      });
      var i=0;
      function pushData(){
        socket.emit('updatePosition', { position: i++ });
        setTimeout(pushData,4000);
      }
    });
    ce qui rappèle les workers du html5.

    bon, c'est du code pompé chez socket.io, qui permet justement ces push, en tant que module pour node.

Discussions similaires

  1. Réponses: 10
    Dernier message: 02/07/2012, 17h30
  2. [DEV] Ipod touch avec serveur PHP
    Par HWICE dans le forum Apple
    Réponses: 7
    Dernier message: 18/01/2008, 18h00
  3. Réponses: 2
    Dernier message: 16/07/2007, 16h04
  4. [PHP-JS] var javaScript avec test php
    Par lepierre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 12h58

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