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

Django Python Discussion :

Lecture en boucle de la base de donnée avec JS, AJAX


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut Lecture en boucle de la base de donnée avec JS, AJAX
    Bonjour,

    A la base je mettais dirigé vers les websocket pour faire communiquer mes joueurs entre eux c'est à dire qu'un joueur créé la partie en tant que serveur...etc, mais je compte mettre tous les joueurs en tant que client.
    Ces clients rejoindront des parties, ou créeront des partie, mais elle seront géré par le serveur du site.

    Chaque partie créer sera un enregistrement dans une table 'PARTIE' de ma BDD, et cette table aura plusieurs joueurs. Quand des joueurs rejoindront une partie le champs 'NO_PARTIE' de l'enregistrement du joueur dans la table 'JOUEUR' prendra l'id de la partie rejointe..

    Donc les données ne sont plus envoyé aux clients, mais le client doit constamment les chercher dans la base de donnée pour voir les changements (savoir combien il y a de joueurs, ou en est la partie ...etc).

    Donc ma question : Quelle méthode utiliser pour constamment lire dans la base de donnée, je suppose que ça n'est pas possible avec Django même mais en JS, JS peut il lire et écrire dans ma BDD, ajax est il la meilleur solution, ajax cohabite il avec Django de la même façon qu'avec un site php ?

    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 338
    Points : 36 860
    Points
    36 860
    Par défaut
    Salut,

    Citation Envoyé par Romaiiiiiin Voir le message
    Donc ma question : Quelle méthode utiliser pour constamment lire dans la base de donnée, je suppose que ça n'est pas possible avec Django même mais en JS, JS peut il lire et écrire dans ma BDD, ajax est il la meilleur solution, ajax cohabite il avec Django de la même façon qu'avec un site php ?
    Ajax est une requête HTTP lancée depuis le navigateur (sur le client).
    Django est un serveur HTTP, il devrait savoir répondre à une requête (même "ajax").
    Mais les Websocket sont là pour faire remonter une information aux clients sans qu'ils aient à aller la chercher.

    Prenez le temps de digérer tous ces concepts, sinon pas facile de savoir quand utiliser quoi...
    D'autant que cela ne sera pas si simple à mettre en œuvre: en avez vous vraiment besoin?

    - W

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Salut,

    Je trouve que le websocket est effectivement plus optimale, pour ce genre de chose, mais ça obligerai un client à devenir serveur ce que je ne souhaite pas.
    L'idéal se serait que le serveur Django le fasse implicitement (envoyer des données au clients), sans devoir recréer d'autre serveurs.


    Ce que je souhaite faire :

    Regrouper plusieurs utilisateur dans différentes 'rooms', et les faire communiquer entre eux, savoir quand quelqu'un rejoins la room, mettre au courant les utilisateurs de la room quand un utilisateur à cliqué sur un bouton..
    Mais je ne souhaite pas créer un serveur par room comme le ferait un websocket, car je ne pourrais plus écrire/lire dans la BDD de Django.


    Je ne vois donc qu'une seul solution : constamment lire la base de donnée pour vérifier s'il y a du changement, bien que je trouve cette méthode assez sale.

    Déjà est-ce que je me trompe dans mon raisonnement, et que me conseillerais tu d'utiliser pour faire cette chose ?


    Merci, pour l'aide que tu m'apportes ça m'aide beaucoup.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 338
    Points : 36 860
    Points
    36 860
    Par défaut
    Salut,

    Citation Envoyé par Romaiiiiiin Voir le message
    Je ne vois donc qu'une seul solution : constamment lire la base de donnée pour vérifier s'il y a du changement, bien que je trouve cette méthode assez sale.

    Déjà est-ce que je me trompe dans mon raisonnement, et que me conseillerais tu d'utiliser pour faire cette chose ?
    En gros, vous réalisez un "chat" via un serveur qui s'occupe de gérer les groupes/salles existantes.
    Vous pouvez utiliser un GUI basique qui dialogue avec un serveur via des sockets IP "standards" sans vous prendre le chou à emballer tout ça dans du javascript et du HTML (au moins dans un premier temps, çà évite d'avoir à penser dans 3 langages de programmation différents). Ce qui vous permettrait de penser aux fonctionnalités du jeu plutôt qu'à espérer qu'un outil magique les réalisera pour vous.

    - W

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Qu'est ce que tu entends par "socket ip standard", quel est le langage utilisé pour la connexion, python ? Cette méthode créée elle un serveur par room ?
    As tu un tutoriel sur le sujet ?

    Je précise que j'ai toujours besoin de communiquer avec la base de donnée sans avoir à rafraîchir la page, l'ajax s'impose donc ?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 338
    Points : 36 860
    Points
    36 860
    Par défaut
    Salut,

    Je parle du petit monde TCP/IP qu'on vous a indiqué dans ce post et du besoin exprimé ici.

    Ce n'est pas en empilant les couches techniques comme HTML, Ajax, Javascript, Django,.... que les difficultés techniques que vous cherchez à résoudre vont disparaître.
    Et si vous voulez un tuto pour voir comment réaliser çà, vous avez déjà celui-ci.

    - W

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Merci de t'as réponse, j'ai en effet effectué et terminer mon application de bataille navale en réseau avec la bibliothèque socket de Python à l'aide de ce tuto et d'autre.
    Cependant je ne pensais pas que celle ci serait utilisable sur le web.

    Par contre cette méthode oblige la création d'un serveur par partie, qui n'est re-joignable que grâce à son adresse privée, les joueurs doivent donc être sur le même réseau ?

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 338
    Points : 36 860
    Points
    36 860
    Par défaut
    Citation Envoyé par Romaiiiiiin Voir le message
    Merci de t'as réponse, j'ai en effet effectué et terminer mon application de bataille navale en réseau avec la bibliothèque socket de Python à l'aide de ce tuto et d'autre.
    Cependant je ne pensais pas que celle ci serait utilisable sur le web.
    Le "web" est une toute petite partie d'internet qui échange ses données via un protocole appelé HTTP.

    Citation Envoyé par Romaiiiiiin Voir le message
    Par contre cette méthode oblige la création d'un serveur par partie, qui n'est re-joignable que grâce à son adresse privée, les joueurs doivent donc être sur le même réseau ?
    Votre serveur de jeu devra être adressable depuis le réseau public. C'est une question de proxy, de NAT,.... qui ne se résout pas par la programmation ou des outils logiciels mais par la configuration de routeurs réseau (ou l'installation du serveur sur le réseau IP "public").

    Si votre code actuel oblige la création d'un serveur par partie, il va falloir bosser pour lui permettre de travailler sur plusieurs parties. C'est d'abord une question de protocole (les messages échangés entre clients et le serveur) et non de "codage" ou d'outil.

    - W

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    D'accord il me faut seulement ouvrir les ports de ma box et de mon par-feux pour créer mon serveur de jeux sur mon adresse IP "public", je vais essayer ça alors !

    Après pour que mon serveur puisse gérer plusieurs partie en même temps, je devrais peut être regrouper les clients de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    client = {
    "room1":[client1, client2, client3],
    "room2":[]...
    }
    De cette façon lorsque je reçois un message d'un client, je déroule les clients des listes du dictionnaire, une fois le client trouvé j'envoi l'info à tous les clients du tableau correspondant.
    Cette façon de faire est viable ?

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 338
    Points : 36 860
    Points
    36 860
    Par défaut
    Citation Envoyé par Romaiiiiiin Voir le message
    De cette façon lorsque je reçois un message d'un client, je déroule les clients des listes du dictionnaire, une fois le client trouvé j'envoi l'info à tous les clients du tableau correspondant.
    Cette façon de faire est viable ?
    Une liste de clients d'un côté et une liste de "room" de l'autre.
    Savoir quels sont les clients dans une "room" est nécessaire... mais c'est un aspect du problème: dans quelle "room" ira le client qui arrive? Que faire de "room" sans client? Rien de bien compliqué mais si vous ne définissez pas cela, çà va être gribouille à coder.

    - W

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    Oui, merci encore pour toutes vos aides, je vous tiens au courant de l'avancement du projet, bonne soirée !

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 45
    Points : 38
    Points
    38
    Par défaut
    OK, c'est bon mon serveur est re-joignable via l'adresse IP "public" !

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/04/2011, 01h09
  2. Réponses: 7
    Dernier message: 13/10/2010, 18h47
  3. Ecriture/ lecture fichier INI pour connexion base de données
    Par lyraaa dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 08/06/2007, 20h37
  4. [MySQL] Problème de boucle while sur base de données
    Par Darhyl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/05/2006, 15h11
  5. lecture base de donnée avec vc++ 2005
    Par k_boy dans le forum MFC
    Réponses: 13
    Dernier message: 21/04/2006, 11h48

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