Thanks. I'm coming from c# but now as I've found Felix's Node.js Style Guide<http://nodeguide.com/style.html>and will try to follow it.
2013. március 26., kedd 17:15:24 UTC+1 időpontban greelgorke a következőt írta: > > 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.