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

NodeJS Discussion :

Socket.IO : Socket.emit ne s'envois pas au serveur


Sujet :

NodeJS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 73
    Par défaut Socket.IO : Socket.emit ne s'envois pas au serveur
    Salut,

    J'ai une application qui permet d'envoyé une notification à chaque connexion d'un membre.

    Voici mon code serveur app.js :

    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
    var https = require('https');
    var mysql = require('mysql');
    var fs = require('fs');
    var options = {key:fs.readFileSync('../../etc/apache2/ssl/key.key'),cert:fs.readFileSync('../../etc/apache2/ssl/cert.crt')};
    var server = https.createServer(options,app);
    var connect = mysql.createConnection({host:'****',user:'****',password:'****',database:'****'});
    var io = require('socket.io')(server);
     
    io.sockets.on('connection', function(socket){
        socket.on('loggued', function(){
            socket.emit('msg', 'Vous êtes connecté !');
        });
    });
     
    server.listen(1812);
    Le problème c'est que mon serveur ne reçois pas l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    socket.emit('loggued');
    J'exécute ce code dans le script de connexion des membres en ajax :

    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
    $.ajax({
        url: 'functions/login.func.php',
        type: 'post',
        cache: 'false',
        dataType: 'json',
        data: {email:email, mdp:mdp},
        success: function(json){
            if(json.reponse === 'member'){ /* Si un membre se connecte */
                setTimeout(function(){ $(location).attr('href','../home'); },1800);
                socket.emit('loggued');
            } else if(json.reponse === 'admin'){ /* Si l'administrateur se connecte */
                setTimeout(function(){ $(location).attr('href','../admin'); },1800);
                socket.emit('loggued');
            } else { /* Erreur de connexion */
                $('#notif').hide().html('<div class="notif_error" id="notif_json">'+json.reponse+'</div>').fadeIn();
                $('button[name=login]').html('Connexion');
                $('button[name=login]').prop('disabled', false);
                $('#mdp').val('');
                $('.btn_success').removeClass('progress');
                $('#email').focus();
            }
        }
    });
    Mais je pense que le problème vient de la redirection faite par js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(location).attr('href','../admin');
    Avez-vous une idée pour résoudre ce problème ?
    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Salut

    Mais je pense que le problème vient de la redirection faite par js :
    A priori aucun rapport, car tu peux inverser ton setTimeout et ton socket.emit, aucune différence. (d'ailleurs, par curiosité, pourquoi un setTimeout?)

    Le problème c'est que mon serveur ne reçois pas l'appel :
    Est-ce que le client l'envoi? passe en mode debug http://socket.io/docs/logging-and-debugging/

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 73
    Par défaut
    Salut,

    Le setTimeout sert à faire patientez le membre pendant la connexion, c'est du design on va dire ^^ mais ça n'a rien a voir avec le problème.

    Le client envois bien au serveur qui me répond :

    Nom : Sans titre 2.jpg
Affichages : 1247
Taille : 36,2 Ko

    Et ensuite la page est redirigé et ce message disparaît, donc l'erreur doit venir de la redirection ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Le problème c'est que mon serveur ne reçois pas l'appel :
    Le client envois bien au serveur qui me répond
    Du coup quel et le problème exactement? je ne suis pas sur de comprendre.

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2012
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 73
    Par défaut
    Le problème c'est que j'ai une connexion en ajax pour identifier les membres (Voir le code ajax).
    Si la connexion réussi, j'envois un évènement au serveur (loggued) qui doit me renvoyer un message (Connecté) pour créer une notification de connexion pour le membre.

    Et le serveur n'envois pas le message, parce que la page est redirigé à cause de $(location).attr('href','../home');

    Il faudrait peut-être faire une redirection au niveau du serveur ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Désolé, j'ai lu «Le client envois bien au serveur qui me répond» avec un point final, et pas « me réponds ce log»

    Par contre, le log que tu donnes ne semble pas correspondre au code que tu nous donnes à moins que le message émis pas le serveur est "Connecté" et non "Vous êtes connecté !", auquel cas ton serveur à bien répondu au client qui à reçu le message de connexion... par contre je ne vois nulle par dans ton code client un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    socket.on('msg', function() {
      console.log('j'ai reçu la validation de connexion du serveur!');
    })
    Ce serait ça ton problème?

    De plus, j'ai beau me triturer le crane, je ne comprends pas pourquoi tu ajoutes un serveur node.js pour signifier que ton client c'est bien loggué, pour le rediriger dans la seconde sur une url visiblement réservé aux personnes connectés

Discussions similaires

  1. Socket envoi pas tous les data
    Par toufik135 dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 27/01/2014, 02h36
  2. Socket envoi message Client/Serveur
    Par sebkill dans le forum C#
    Réponses: 27
    Dernier message: 28/05/2008, 22h34
  3. [Socket] Creer Socket d'envoi UDP
    Par Metalman dans le forum Web & réseau
    Réponses: 0
    Dernier message: 20/11/2007, 23h14
  4. Socket, recv et select qui ne marche pas
    Par Zapan dans le forum Réseau
    Réponses: 18
    Dernier message: 30/06/2006, 20h19
  5. Réponses: 5
    Dernier message: 12/04/2006, 17h41

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