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 :

Appel d'un serveur pour requete json avec adresse IP locale ou publique


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ing�nieur avant-vente
    Inscrit en
    Janvier 2017
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur avant-vente
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par d�faut Appel d'un serveur pour requete json avec adresse IP locale ou publique
    Bonjour,

    Je fais appel � vous car je suis (tr�s) d�butant en JavaScript et j'essaie d'adapter le code d'une page mais je suis confront� � un probl�me d'adresse IP ou d'URL.

    Ma page contient une fonction JavaScript qui va faire une requ�te json sur une URL pour r�cup�rer une valeur.
    Derri�re cette URL j'ai mon serveur domotique.
    Quand je suis sur mon PC connect� � r�seau local sur lequel se trouve le serveur, l'adresse IP du serveur est en 192.168.1.xx.
    Par contre, quand je suis sur mon t�l�phone, donc sur internet, l'adresse IP du serveur est l'adresse IP publique de ma box ou alors mon nom de domaine. Par exemple www.monserveur.fr

    Hors dans le code que je dois adapter, je dois rentrer une seule adresse pour le serveur.

    En voici l'extrait :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $.LastUpdateTime=parseInt(0);
    $.roomplan=21;
    $.domoticzurl="http://192.168.0.41:8080";
     
    function RefreshData()
    {
    	clearInterval($.refreshTimer);
    	var jurl=$.domoticzurl+"/json.htm?type=devices&plan="+$.roomplan+"&lastupdate="+$.LastUpdateTime+"&jsoncallback=?";
    	$.getJSON(jurl,
    	{
    		format: "json"
    	},
    La variable domoticzurl doit �tre adapt�e mais comment ?
    Pouvez vous m'aider et me dire comment on g�re ce type de probl�me en JavaScript ?
    Il faut que mon code fonctionne sur tous les navigateurs, que je sois connect� sur mon r�seau local ou alors sur Internet.

    D'avance un grand merci � vous.
    Alex

  2. #2
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    Pour dynamis� l'IP ou le domain ll te faut l'utiliser le nom de domain de fa�on dynamique en Js sans http(s) devant afin qu'il accepte les deux protocoles, et qu'il r�cup�re le domain appel�.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $.LastUpdateTime=parseInt(0);
    $.roomplan=21;
    $.domoticzurl="//" + document.domain + ":8080";
     
    function RefreshData()
    {
        clearInterval($.refreshTimer);
        var jurl=$.domoticzurl+"/json.htm?type=devices&plan="+$.roomplan+"&lastupdate="+$.LastUpdateTime+"&jsoncallback=?";
        $.getJSON(jurl,
        {
            format: "json"
        },

  3. #3
    Membre averti
    Homme Profil pro
    Ing�nieur avant-vente
    Inscrit en
    Janvier 2017
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur avant-vente
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par d�faut
    Merci pour ta r�ponse !
    Ca marche mais �videment comme toujours chez moi il y a un mais !
    Le soucis c'est que le port n'est pas le m�me quand je suis sur le r�seau local ou quand j'acc�de depuis internet.
    Sur le r�seau local le port du serveur domotique est bien 8080. Par contre, quand je viens d'internet, je dois acc�der � la box par le port 8888.
    Y a t'il un moyen de r�gler ce "dernier" probl�me ?

  4. #4
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    Code javascript : 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
       $(document).ready(function() {
         $.LastUpdateTime = parseInt(0);
         $.roomplan = 21;
         $.domoticzurl = "//" + document.domain + ":8080";
         $.ajax({
             type: "POST",
             url: $.domoticzurl,
             datatype: "xml",
             error: function(jqXHR, textStatus, errorThrown) {
               if (jqXHR.status == 404) { //si l'url appelé retourne une erreur 404 on réaffecte notre URL en passant le nouveau PORT 
                 $.domoticzurl = "//" + document.domain + ":8888";
               }
             },
             success: //don't do anything. just visit the page 
           )
         };
     
         function RefreshData() {
           clearInterval($.refreshTimer);
           var jurl = $.domoticzurl + "/json.htm?type=devices&plan=" + $.roomplan + "&lastupdate=" + $.LastUpdateTime + "&jsoncallback=?";
           $.getJSON(jurl, {
               format: "json"
             },
           });
       });
    L'id�e et l� : un appel ajax en amont afin de savoir l'existance de l'url appel� par d�faut en utilisant le port 8080, si il y a une erreur 404 non existance de la page en question alors on r�affecte notre URL avec le bon port 8888.
    J'ai pas test� ...

  5. #5
    Membre averti
    Homme Profil pro
    Ing�nieur avant-vente
    Inscrit en
    Janvier 2017
    Messages
    26
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activit� : Ing�nieur avant-vente
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Janvier 2017
    Messages : 26
    Par d�faut
    Franchement merci car m�me si je connais un peu la programmation je ne connais rien � Javascript.
    Dis moi si j'abuse mais j'ai encore une question.
    Que retourne document.domain comme valeur ?
    Si je suis sur mon r�sau local, je vais appeler le serveur domotique en faisant : 192.168.1.150:8080.
    Si je suis sur internet je vais acc�der � mon serveur via un dyndns (par exemple toto.dyndsn.me:8888).
    Si la chaine document.domain contient l'adresse IP et que cette adresse IP commence par 192.168.x.y c'est que forc�ment je suis en local. Car les adresses qui commencent pas 192.168 sont des adresses locales.
    Est-ce que je ne pourrais pas faire un test sur cette valeur ? Et par exemple dire :
    Si (document.domain commence par 192.168 ou http://192.168) alors port=8080 sinon port=8888

    Et si mon raisonnement est bon comment je peux faire ce test en JS ?

  6. #6
    Membre Expert

    Homme Profil pro
    Ing�nieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur Hospitalier
    Secteur : Sant�

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par campeaux Voir le message
    Que retourne document.domain comme valeur ?
    La valeur document.domain retourne le domaine seulement soit sans le http(s)://mondomain.com ou mon ip 192.168.1.150 sans son port qui faut rentrer � la main. //ici on test si document.domain est �gal a ton IP locale 192.168.1.150 on concat�ne le port :8080 sinon on concat�ne le domaine avec le port :8888 ...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     $.LastUpdateTime = parseInt(0);
     $.roomplan = 21;
     $.tmp_domain = (document.domain === '192.168.1.150') ? document.domain + ":8080" : document.domain + ":8888"
     $.domoticzurl = "//" + $.tmp_domain;
     
     function RefreshData() {
       clearInterval($.refreshTimer);
       var jurl = $.domoticzurl + "/json.htm?type=devices&plan=" + $.roomplan + "&lastupdate=" + $.LastUpdateTime + "&jsoncallback=?";
       $.getJSON(jurl, {
             format: "json"
           },

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Main loop cot� serveur pour un jeu avec NodeJS?
    Par Argorate dans le forum NodeJS
    R�ponses: 13
    Dernier message: 31/12/2015, 01h31
  2. Configuration exim4 pour site internet avec mail en local en plus ?
    Par Invit� dans le forum Administration syst�me
    R�ponses: 1
    Dernier message: 02/02/2015, 20h48
  3. Comment executer une requete json avec java?
    Par stpaul04 dans le forum D�buter avec Java
    R�ponses: 7
    Dernier message: 03/08/2014, 04h27
  4. [JSTL] Ecart local/serveur pour affichage de \" avec c:set et c:out
    Par cbil1 dans le forum Taglibs
    R�ponses: 0
    Dernier message: 05/01/2012, 11h03
  5. Erreur requete json avec jquery 1.5
    Par gtraxx dans le forum jQuery
    R�ponses: 2
    Dernier message: 06/02/2011, 18h54

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