this.Listen should be this.listen. UppersCase names are per convention 
Constructors, your Listen isn't.

Am Dienstag, 26. März 2013 16:45:02 UTC+1 schrieb Perrier:
>
> Thanks for the answers, finally I have figured it out somehow. You can see 
> the working class below, please take suggestions if it contains bugs or it 
> isn't nice enough:
>
> function TCPServer(listenAddress, listenPort) {
> /** @private */ var HOST = listenAddress;
> /** @private */ var PORT = listenPort;
> /** @private */ var tcpServer = net.createServer();
> /** @private */ var gatewayList = []; 
>  /**
>  * Searches for the gateway by address and port number.
>  * 
>  * @param {string} address Remote address of the connected gateway.
>  * @param {number} port Remote port of the connected gateway.
>  */
> var 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 {'index':i, 'gateway':gatewayList[i]};
> }
> }
> }      
> };
>
> /**
>  * Handles incoming data packets.
>  * 
>  * @param {object} stream The open data stream where the packet came from.
>  * @param {object} data The byte array of the data buffer.
>  */
> var dataHandler = function (stream, data) {
> var gateway = findByAddressAndPort(stream.remoteAddress, 
> stream.remotePort).gateway;
> gateway.Buffer.Add(data);
> };
>
> var onData = function(data) {
> dataHandler(this, data);
> }
>  var onClose = function(close){
> console.log('CONNECTION CLOSED', close);            
> };
>
> var onError = function(exception) {
> console.log('SOCKET ERROR: ' + exception);    
> };
>
> var onListen = function onListen() {
> tcpServer.on('connection', onConnection);
> tcpServer.on('error', onError);
> tcpServer.on('close', onClose);               
> console.log('Server listening on ' + HOST +':'+ PORT);
> };  
>
> var onConnection = function (stream) {
> var gw=new GatewayClass.Gateway(stream);
> gatewayList.push(gw);
> stream.on('data', onData);
> console.log("Clients: ", gatewayList.length);
> }; 
>
> this.Listen = function() {
> console.log(onListen);
> tcpServer.listen(PORT, HOST, onListen);
> }
> }
>
>
>
> 2013. március 25., hétfő 16:44:02 UTC+1 időpontban Perrier a következőt 
> írta:
>>
>> 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.


Reply via email to