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 :

Envoi JavaScript par TCP local


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Points : 58
    Points
    58
    Par défaut Envoi JavaScript par TCP local
    Bonjour à tous,

    C'est une idée pas très commune, mais j'essaie de piloter Firefox par le biais d'un serveur TCP
    Tout marche bien, j'arrive à lui envoyer une source HTML et JS, Il me l'affiche et je suis déjà très content d'en être arrivé là, avec le peu de connaissance que je possède dans le monde du WEB

    Une fois la page affichée, je voudrais par exemple qu'il m'affiche une boite d'alert
    J'envoie donc "alert('coucou')" et par magie, la boité apparait

    Mais(oui !! il y un mais sinon je ne vous dérangerait pas )
    Le problème c'est que je perd ma page, une fois la boite fermée

    J'ai essayé de potasser AJAX et sa fameuse méthode pour envoyer du texte sans recharger la page, mais je ne comprend pas comment je pourrais faire pour lui envoyer ma requête par TCP sans effacer cette maudite page.

    Cela marche avec la console JS de FF, mais pas avec mon serveur
    J'envoie bien la requête avec ce code trouvé sur le NET dans un TUTO

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var requete = new XMLHttpRequest();
     
    requete.open('post', 'http://localhost:5000', true);
     
     try
     {
      requete.send('coucou'); // Texte de la requete
      requete.send(null); 
     }
     catch(err)
     {
      alert(err.description);
     }
    Je la récupére avec cet autre code trouvé sur le net
    https://gist.github.com/alecperkins/3889507
    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
    var s_ajaxListener = new Object();
    s_ajaxListener.tempOpen = XMLHttpRequest.prototype.open;
    s_ajaxListener.tempSend = XMLHttpRequest.prototype.send;
    s_ajaxListener.callback = function () {
      // this.method :the ajax method used
      // this.url    :the url of the requested script (including query string, if any) (urlencoded) 
      // this.data   :the data sent, if any ex: foo=bar&a=b (urlencoded)
      alert(this.method);
      alert(this.url);
      alert(this.data);
    }
     
    XMLHttpRequest.prototype.open = function(a,b) {
      if (!a) var a='';
      if (!b) var b='';
      s_ajaxListener.tempOpen.apply(this, arguments);
      s_ajaxListener.method = a;  
      s_ajaxListener.url = b;
      if (a.toLowerCase() == 'get') {
        s_ajaxListener.data = b.split('?');
        s_ajaxListener.data = s_ajaxListener.data[1];
      }
    }
     
    XMLHttpRequest.prototype.send = function(a,b) {
      if (!a) var a='';
      if (!b) var b='';
      s_ajaxListener.tempSend.apply(this, arguments);
      if(s_ajaxListener.method.toLowerCase() == 'post')s_ajaxListener.data = a;
      s_ajaxListener.callback();
    }
    Y'aurait il un moyen d'envoyer la commande JS à mon navigateur en local avec mon serveur tout en n'effaçant pas ma fameuse page

    J'espère que je ne vous ai pas trop saoulé avec ma question biscornue, car moi même depuis des semaines que je suis sur ce projet je m'y perd un peu.
    C'est pourquoi je suis venu voir des pro de la chose, car je tourne en rond

    Je vous souhaite une bonne soirée

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2014
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arménie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2014
    Messages : 388
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Vous avez écrit :
    j'essaie de piloter Firefox par le biais d'un serveur TCP
    Quelle solution avez-vous adoptée, coté serveur?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 309
    Points : 58
    Points
    58
    Par défaut
    J'utilise un langage bas niveau malheureusement peu connu, bien qu'il existe depuis plus de 10 ans PureBasic.
    Dedans il y a une librairie Network qui permet de se connecter à FF ou tout autre programme en TCP par lequel l'on peut envoyer des DATAS par le biais d'un pointeur.

    Une question que je me pose, j'aimerais savoir si j'ai bien compris le fonctionnement de FireFox.
    Le problème est que dans mon cas, on pourrait dire que j'inverse le fonctionnement normal des choses, le serveur étant le "questionneur" et le navigateur le "répondeur"

    - Le serveur envoi la page
    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
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 259
     
    <!DOCTYPE HTML PUBLIC |-//W3C//DTD HTML 4.01 Transitional//EN|>
     
    <html>
     
      <head>
       <title>Remote browser</title>
        <meta http-equiv=|Content-Type| content=|text/html; charset=iso-8859-1|>
      </head>
     
      <body>
        Coucou 
      </body>
     
    </html>
    - Le navigateur lui réponds par une requête avec un HEADER du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    GET / HTTP/1.1
    Host: localhost:5000
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    - Le serveur doit à son tour envoyer une confirmation, sinon le navigateur reste en attente (Petite roue qui tourne dans l'onglet)
    Bon alors jusque là, admettons

    Mais ce qui m'a fortement surpris, c'est que le serveur doive une SECONDE fois envoyer à nouveau TOUT le contenu de la page, donc en fin de compte

    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
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 259
     
    <!DOCTYPE HTML PUBLIC |-//W3C//DTD HTML 4.01 Transitional//EN|>
     
    <html>
     
      <head>
       <title>Remote browser</title>
        <meta http-equiv=|Content-Type| content=|text/html; charset=iso-8859-1|>
      </head>
     
      <body>
        Coucou 
      </body>
     
    </html>
    C'est sûr que dans mon exemple, ça fait rire, mais je me suis dit, quel gâchis de réseau de devoir envoyer plusieurs kilos d'octets juste pour dire c'est bon j'ai reçu

    Sinon le navigateur reçois bien cette confirmation, mais perd la page pour en afficher une toute blanche, étant donné que le serveur ne lui envoi qu'une confirmation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HTTP/1.1 200 OK
    Content-Type: text/html; charset=utf-8
    Content-Length: 0
    Donc ma question est, y a t'il un moyen en HTML pour envoyer seulement la confirmation sans renvoyer la page, ou bien pour faire ça, on est obligé de passer par AJAX et XMLHttpRequest ?

    Entretemps, j'ai continué à chercher, et un copain PureBasic a réussis à creer une connection WebSocket, et là cette fois, ça marche sans effacer la page

Discussions similaires

  1. Envoi email par javaScript
    Par PHPDOS dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/02/2010, 16h53
  2. envoi d'un formulaire htlm+javascript par mail
    Par danièle100 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/03/2008, 10h22
  3. Envoi mail par Notes avec un autre nom
    Par why-not-mi dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/10/2005, 16h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. problème de connection mysql par tcp/ip
    Par leroyphil dans le forum Administration
    Réponses: 5
    Dernier message: 04/09/2003, 18h27

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