Warum beide & socket ‚Timeout‘ Handler res ausgelöst während ich nenne nurWarum beide res & Socket 'Timeout' Handler ausgelöst werden, während ich nur socket.emit aufrufen ('Timeout')?
socket.emit('timeout');
Nicht sicher, ob das etwas für Sie liegt auf der Hand. Vielen Dank.
[Ausgabe]
[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);
Vielen Dank für Ihre Erklärung und Ihren Link. Jetzt ist mir der Ablauf ziemlich klar. Flow: Socket-Timeout-Ereignis wird ausgegeben -> Socket-Timeout-Callback -> mit diesem Callback wird ein res-Timeout-Ereignis ausgegeben -> res-Timeout-Callback. – user1384726
@ user1384726 - Ja, das ist es genau. Ein großer Vorteil der Programmierung mit einer Open-Source-Bibliothek ist, dass Sie einfach den Code betrachten können (wenn Sie das richtige Stück Code mit der Suche finden) und genau sehen, was es macht. – jfriend00
Bevor ich bezweifle, gibt es eine Beziehung zwischen "Socket" -Klasse und "Antwort" -Klasse, die das Verhalten verursachen. Ich sehe 'Socket' ist Attribut der 'Antwort' von 'console.log'. Dies ist jedoch NICHT der Fall. Nochmals vielen Dank für Ihre Erklärung. – user1384726