2016-03-24 3 views
0

Я пытаюсь вызвать функцию, созданную в другом «классе», и я хочу использовать ее в socket.on (...), но она не работает, она продолжает показыватьвызов функции в узле js с использованием сокета

это.функция не является функцией.

здесь код

//calling the function 

Serveur.prototype.traitementSurConnection = function(socket) { 
var that = this 
    socket.on('connection', function (creator, typeArtifact,idConteneur, typeConteneur) { 

     that.addArtifact('momo', 'img', 1,0); 

    }) 
}; 

//the function 

ZoneCollaborative.prototype.addArtifact = function(creator, typeArtifact,idConteneur, typeConteneur) { 

    // calcul d'un nouvel identifiant 

    var id = this.setIdAr(); 

    console.log(' *** ZC : calcul nouveau IdArtifact = '+id); 


    // création de l'artifact 

    var monArtifact = new Artifact(id, creator, typeArtifact, idConteneur, 

      typeConteneur); 

    console.log(' *** ZC : creation artifact'+monArtifact.getId()); 

    // ajout à la liste 

    this.artifacts.push(monArtifact); 


    console.log(' *** ZC : total artifact ='+ this.artifacts.length); 

}; 
+0

Опубликовать больше кодов для Serveu r создание и использование экземпляра. – dfsq

+0

Поделитесь ли прототипом 'Serveur' и' ZoneCollaborative'? Можете ли вы опубликовать код, где это происходит? –

+0

нет, они не делят это –

ответ

0

вот FUL код Боте Serveur.js и ZoneCollaborative.js

//Serveur.js

var http = require('http'); 

var socket = require('socket.io'); 

var ZP = require('./ZonePartage'); 

var Constantes = require('./Constante'); 

//création des constantes 

var CONSTANTE = new Constantes(); 

function Serveur(ZP, port) { 

    this.ZP = ZP; 

    this.port = port; 

    console.log(" ---- Creation d'un serveur pour la ZP (" + ZP.getId() 
      + ") sur le port " + port); 

    var serveur = http.createServer(function(req, res) { 

    }); 

    serveur.listen(this.port, function() { 

     console.log(' ---- Server en ecoute sur port ' + port); 

    }); 

    // 

    var io = require('socket.io').listen(serveur); 


    console.log(' ---- Socket en ecoute sur port ' + port); 

    browser = require('iotdb-arp');// module qui s'occupe de la determination de l'adress MAC 

    io.sockets.on('connection', (function(socket) { 

     console.log(' ---- Socket connection'); 
     console.log('un utilisateur est connecté'); 

     browser.browser({}, function(error, d) { 

      if (error) { 

       console.log("#", error); 

      } else if (d) { 

       var adresse = d.ip; 

       console.log('son adresse ip est ' + adresse); //obtenir l'adress ip de l'utilisateur connecté 

      } 
     }); 

     socket.on('disconnect', function() { 

      console.log(' ==> 1 utilisateur déconnecté <== '); //déconnection 
     }); 

     this.traitementSurConnection(socket); 

    }).bind(this)); 

    console.log(' ---- Socket en attente de traitement port ' + port); 
} 

module.exports = Serveur; 



Serveur.prototype.demandConnexion = function(idZEP) { 

    if (this.ZP.createZE(idZEP)) 

    { 

     console.log(' ==> socket : demande de creation ZE pour ' + idZEP 
       + ' accepte'); 

    } 

    else 

    { 

     console.log(' ==> socket : demande de creation ZE pour ' + idZEP 
       + ' refuse'); 

    } 

}; 

Serveur.prototype.traitementSurConnection = function(socket) { 
    console.log(' ==> socket connexion'); 

    var self = this; 
    socket.on('connection', function(creator, typeArtifact, idConteneur, 
      typeConteneur) { 

     self.addArtifact('momo', 'img', 1, 0); 

    }) 

      } 
    }); 

//ZoneCollaborative.js

ZoneCollaborative.prototype.addArtifact = function(creator, typeArtifact,idConteneur, typeConteneur) { 



    // calcul d'un nouvel identifiant 

    var id = this.setIdAr(); 

    console.log(' *** ZC : calcul nouveau IdArtifact = '+id); 


    // création de l'artifact 

    var monArtifact = new Artifact(id, creator, typeArtifact, idConteneur, 

      typeConteneur); 

    console.log(' *** ZC : creation artifact'+monArtifact.getId()); 

    // ajout à la liste 

    this.artifacts.push(monArtifact); 


    console.log(' *** ZC : total artifact ='+ this.artifacts.length); 

    };