以下は単純な Node.js tcp サーバーです。
var net = require('net');
var conn = [];
var server = net.createServer(function(client) {//'connection' listener
var i = conn.push(client) - 1;
//console.log('[conn',i,']', client.remoteAddress, ':', client.remotePort);
console.log('[disc]', conn[i].remoteAddress, ':', conn[i].remotePort);
client.on('end', function() {
console.log('[disc]', conn[i].remoteAddress, ':', conn[i].remotePort);
});
client.on('data', function(msg) {
console.log('[data]', msg.toString());
})
client.write('hello\r\n');
//client.pipe(client);
});
server.listen(8080);
クライアントが接続、送信、または切断すると、クライアントに関する情報が出力されます。ただし、クライアントが切断された場合にのみundefined
、ソケット情報ではなく出力されます。例:
[conn] 127.0.0.1 : 52711
[data] 127.0.0.1 : 52711 world!
[disc] undefined : undefined
なぜこれが起こるのですか?これは、閉じたときにソケットが破棄されるためですか? ソケットの閉鎖に関する情報を知る必要があります。