Forum Programmation.python Socket HTTP et Ajax

Posté par  . Licence CC By‑SA.
0
23
mar.
2016

Bonjour,

Je programme un socket en python dont le but est de diffuser du dynamique html.

Pour l'instant mon programme publie du html lorsque mon client fait une requète.

Néanmoins la connection ne semble jamais coupée car le navigateur signal qu'il est toujours en train de charger.

Lorsque je regarde les solutions asynchrones normalisées il me semble que la connection est fermée car le navigateur signal que le chargement est terminé.

Savez-vous si le fait que le navigateur soit encore en attente de chargement malgrès que la transmission ai été effectuée me permet d'envoyer d'autres commandes via http ?

  • # Hein ?

    Posté par  (site web personnel) . Évalué à 2.

    Je suis désolé, je n'ai pas compris ce que tu cherches à faire.

    Lorsque je regarde les solutions asynchrones normalisées

    Qu'est-ce qu'une solution normalisée ? Ajax ? Websockets ?

    socket en python dont le but est de diffuser du dynamique html

    Quelle bibliothèque utilises-tu pour envoyer ton HTML ? Utilises-tu un serveur HTTP ou es-tu en train de tenter d'envoyer ta page web à coups de socket.write()  ? Si tu utilises l'API des sockets, ton protocole HTTP est-il bien implanté ?

    • [^] # Re: Hein ?

      Posté par  . Évalué à -5.

      Merci pour ton aide.

      Non je n'envois la page web que sur requète du client donc une seule fois.

      Néanmoins la connection reste en attente et le navigateur l'affiche (sablié).

      Les implantations de l'objet XHtmlRequest que j'ai vu permettent de mettre une connection en attente de commandes, cela ressemble à cette 'mauvaise implantation' de mon serveur http basé sur le module socket de la bibliotheque officielle python3 sauf que celui ci signale que la page est en attente.

      Alors après je me demande dans quel état est le navigateur et quelles sont les commandes qu'il peut recevoir…

      • [^] # Re: Hein ?

        Posté par  (site web personnel) . Évalué à 3. Dernière modification le 23 mars 2016 à 16:11.

        Non je n'envois la page web que sur requète du client donc une seule fois.

        Revoir la question précédente (HTTP transmet du HTML ou XML ou… mais il a un protocole de transmission autour (surtout avant) des données, si tu te contentes d'écrire le contenu, tu ne respectes pas le protocole).

        Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

      • [^] # Re: Hein ?

        Posté par  . Évalué à 3.

        requète

        requête

        connection

        connexion

        Alors après je me demande dans quel état est le navigateur et quelles sont les commandes qu'il peut recevoir…

        Le navigateur il reçoit a shit ton de javascript, déversé sur lui comme la décharge d’un kangourou en décompositioon… pour commencer…

        • [^] # Re: Hein ?

          Posté par  . Évalué à -6.

          Ok dans ce cas là je n'utilise pas javascript.

          Peut-être que je peu quand même simuler une fonction asynchrone sans javascript ?

          • [^] # Re: Hein ?

            Posté par  (site web personnel) . Évalué à 1.

            Re n0wic,

            Je dois être vraiment être fatigué car je ne comprends toujours rien à ce que tu cherches à faire.

            Si j'ai bien compris, tu as une page web qui fait des requêtes Ajax vers un serveur. Le navigateur va faire une requête en HTTP vers le serveur pour ta requête Ajax, et le serveur renvoie une réponse HTTP.

            Dans ce cas, le serveur DOIT être un serveur HTTP ! Sinon comme indiqué par lolop, c'est comme si tu parlais en japonais à un suédois (no offense) : les deux ne parlant pas le même langage, ils ne sont pas capables de communiquer !

            Si tu veux répondre à une requête Ajax, il faut utiliser un serveur http. Il y a des bibliothèques type SimpleHTTPServer en python 2 et http.server en python 3. Ces deux outils sont dans la bibliothèque standard (donc no excuses), très bien documentés et tu trouveras beaucoup d'exemples dans leur utilisation.

            Après comme c'est relativement bas niveau, tu peux utiliser des modules comme Bottle ou Flask pour te simplifier la vie.

            • [^] # Re: Hein ?

              Posté par  . Évalué à -6.

              Effectivement ce n'est pas clair tout cela est expérimental, je fais des essais avec socket pour servir le protocole http.
              J'avais un pseudo résultat asyncrone sans javascript mais en fait c'était juste un bug du au fait que je ne reinitilisait totalement la socket, j'ai vu pleins d'options aussi je vais regarder.

              Donc effectivement comme tu me le conseilles je vais utiliser un serveur http qui supporte ajax

              ou sinon je fais un truc synchrone (toujours avec http) et le client raffraichis les données à la main ca le fait c'est simple et l'implantation est pas prise de tête.

            • [^] # Re: Hein ?

              Posté par  . Évalué à -6.

              Ce qui me fait peur avec les frameworks c'est qu'il y a souvent beaucoup de dépendances.

              Ce n'est pas trop compliqué à maintenir ? Je penses à la compatibilité assendante et les différentes version sans compter l'intégration dans les distribution ?

              Pour python2 en revanche les portages ne sont généralement pas trop compliqués mais bon.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.