See the last diagram in http://howtonode.org/object-graphs to understand that functions on objects are in no-way bound to the object you initially assigned them to.
On Mon, Mar 25, 2013 at 11:30 AM, mgutz <mario.l.gutier...@gmail.com> wrote: > You may also need to bind `onConnection` to `this` otherwise `this.onData` > would be invalid as well. > > > On Monday, March 25, 2013 9:28:06 AM UTC-7, mgutz wrote: >> >> >> Shouldn't `stream.on('data', onData);` be `this.onData`? >> >> >> >> >> >> On Monday, March 25, 2013 8:44:02 AM UTC-7, Perrier wrote: >>> >>> Hi, >>> >>> I cannot reach some of the fields of my class and I don't understand >>> why. Someone please take a look at my code. This is the Nth one, I was >>> changing this to var, to TCPServer.prototype.sg etc. Nothing helped. >>> I've started with a sample tcp server from Anwajler's blog >>> here<http://anwajler.com/node.html>. >>> It was working well, but I would like to put it into a seperate file, into >>> a module. I've created my TCPServer class as follows: >>> >>> var net = require('net'); >>> var GatewayClass = require('./Gateway.js'); >>> >>> exports.TCPServer = TCPServer; >>> >>> function TCPServer(host, port) { >>> this.HOST = host; >>> this.PORT = port; >>> var tcpServer = net.createServer(); >>> this.gatewayList = []; >>> this.findByAddressAndPort = function (address, port) { >>> var i; >>> for(i = 0; i < gatewayList.length; i++){ >>> if(gatewayList[i] !== undefined) { >>> if(gatewayList[i].IP === address && gatewayList[i].Port === port) { >>> return gatewayList[i]; >>> } >>> } >>> } >>> }; >>> this.dataHandler = function (stream, data) { >>> var gateway = this.findByAddressAndPort(**stream.remoteAddress, >>> stream.remotePort); >>> gateway.Buffer.Add(data); >>> }; >>> >>> this.onData = function(data) { >>> this.dataHandler(this, data); >>> } >>> >>> this.onClose = function(){ >>> console.log('CONNECTION CLOSED'); >>> }; >>> this.onError = function(exception) { >>> console.log('SOCKET ERROR: ' + exception); >>> }; >>> >>> this.onListen = function() { >>> tcpServer.on('connection', this.onConnection); >>> tcpServer.on('error', this.onError); >>> tcpServer.on('close', this.onClose); >>> console.log('Server listening on ' + this.HOST +':'+ this.PORT); >>> }; >>> >>> this.onConnection = function (stream) { >>> var gw=new GatewayClass.Gateway(stream); >>> gatewayList.push(gw); >>> stream.on('data', onData); >>> console.log("Clients: ", gatewayList.length); >>> }; >>> this.Open = function() { >>> tcpServer.listen(this.PORT, this.HOST, this.onListen); >>> } >>> } >>> >>> TCPServer.prototype.Listen = function() { >>> this.Open(); >>> } >>> >>> >>> In my main application I create an instance of TCPServer and start >>> listening this way: >>> >>> var TCPServerClass = require('./tcpserver.js'); >>> >>> var TCPServer = new TCPServerClass.TCPServer(**GLOBALS.HOST, >>> GLOBALS.PORT); >>> TCPServer.Listen(); >>> >>> >>> Thanks for your help. This version says: >>> >>> events.js:130 >>> throw TypeError('listener must be a function'); >>> ^ >>> TypeError: listener must be a function >>> at TypeError (<anonymous>) >>> at Server.EventEmitter.**addListener (events.js:130:11) >>> >>> Peter >>> >>> -- > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to nodejs@googlegroups.com > To unsubscribe from this group, send email to > nodejs+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to nodejs+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.