Pourquoi gestionnaire deux res & socket « timeout » sont déclenchées alors que je ne convoquent quePourquoi le gestionnaire res & socket 'timeout' est-il déclenché alors que j'appelle seulement socket.emit ('timeout')?
socket.emit('timeout');
Je ne sais pas si cela est quelque chose d'évident pour vous. Je vous remercie.
[Sortie]
[Function]
[Function]
true
timeout
timeout2
[Code]
var http = require('http');
function http_relay(req, res){
//console.log(res);
console.log(req.socket === res.socket);
//console.log(res.
console.log(res.socket._events.timeout)
console.log(res.connection._events.timeout)
console.log(res.socket._events.timeout === res.connection._events.timeout)
res.on('timeout',function(){
//res.end();
console.log('timeout');
});
socket = res.socket;
socket.on('timeout',function(){
//res.end();
console.log('timeout2');
});
socket.emit('timeout');
//res.emit('timeout');
}
ser = http.createServer(http_relay);
ser.listen(8080);
Merci beaucoup pour votre explication et votre lien. Maintenant, le flux est assez clair pour moi. Flow: événement socket timeout émis -> socket timeout callback -> avec ce rappel, res timeout event émit -> res timeout callback. – user1384726
@ user1384726 - Oui, c'est exactement ça. Un énorme avantage de la programmation avec une bibliothèque open source est que vous pouvez simplement regarder le code (si vous pouvez trouver le bon morceau de code avec search) et voir exactement ce qu'il fait. – jfriend00
Avant de douter, il y a une relation entre la classe 'socket' et la classe 'response' qui provoquent le comportement. Je vois 'socket' est l'attribut de 'response' par 'console.log'. Cependant, ce n'est pas le cas. Encore merci pour votre explication. – user1384726