node.js - Nodejs Require to see which client had exited -
i connected through nodejs code using telnet. when exiting telnet, 'end' event fires not show remote address , port.
var net = require('net'); var server = net.createserver(function(s) { console.log('connect:' + s.remoteaddress + ':' + s.remoteport); s.on('data', function(data) { console.log('data: ' + s.remoteaddress + ':' + s.remoteport); s.write('you said "' + data + '"'); }); s.on('end', function() { console.log('end: ' + s.remoteaddress + ':' + s.remoteport); }); s.write('hello\r\n'); }); server.listen(8000, function() { console.log('server started on port 8000'); }); on server console, following when quit telnet
end: undefined:undefined disconnected any ideas?
the end event fired when client has closed connection. in case, default behaviour net.createserver close connection (but see below), there no more remoteaddress , remoteport @ time callback called.
the easiest solution store values in variable when connection created:
var server = net.createserver(function(s) { var address = s.remoteaddress; var port = s.remoteport; ... s.on('end', function() { console.log('end: ' + address + ':' + port); }); }); another option enable allowhalfopen, stop server closing connection when client has closed side:
var server = net.createserver({ allowhalfopen : true }, function(s) { ... s.on('end', function() { console.log('end: ' + s.remoteaddress + ':' + s.remoteport); s.end(); // !!! close server side explicitly }); });
Comments
Post a Comment