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.


Reply via email to