0
爲什麼這兩個水庫&插座「超時」處理程序被觸發 而我只能撥打爲什麼res&socket'timeout'處理程序被觸發,而我只調用socket.emit('timeout')?
socket.emit('timeout');
不知道這是否是明顯的東西給你。謝謝。
[輸出]
[Function]
[Function]
true
timeout
timeout2
[代碼]
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);
非常感謝您的解釋和您的鏈接。現在流程對我來說很清楚。流:發送套接字超時事件 - >套接字超時回調 - >與此回調,發射res超時事件 - > res超時回調。 – user1384726
@ user1384726 - 是的,就是這樣。使用開源庫進行編程的一個巨大優勢是您可以查看代碼(如果您可以通過搜索找到合適的代碼片段)並查看它到底在做什麼。 – jfriend00
在我懷疑導致行爲的'套接字'類和'響應'類之間存在某種關係之前。我確實看到'socket'是'console.log'的'response'的屬性。但是,情況並非如此。再次感謝您的解釋。 – user1384726