2016-03-24 9 views
0

Ich versuche, eine Funktion, die in einer anderen "Klasse" erstellt wird, und ich möchte es in der socket.on (...) verwenden, aber es funktioniert nicht, es zeigt weiterhinFunktionsaufruf in Knoten js mit Socket

this.function ist keine Funktion.

hier ist der Code

//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

Post mehr Code für Serveu r Erstellung und Verwendung von Instanzen – dfsq

+0

Teilen 'Serveur' und' ZoneCollaborative' den Prototyp? Können Sie den Code dort posten, wo dies geschieht? –

+0

nein sie teilen es nicht –

Antwort

0

hier die ful Code von bothe Serveur.js und 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 ist

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); 

    };