Я пробую Node.js, написав очень простой http / web-кеширующий прокси, и наткнулся на то, что мне не удалось прорваться.
Если у меня есть базовая функция прокси-сервера (прослушивание запроса, передача его на внешний сервер, ожидание ответа, передача его обратно клиенту), как я могу определить, когда клиент (веб-браузер) отменяет запрос? Когда пользователь нажимает «Стоп» / «Esc» в своем браузере, браузер не отправляет мне «запрос» или информацию, и приложение обратного вызова, когда соединение «ответ» заканчивается, не вызывается.
Вот что я имею в виду:
http.createServer (clientRequest, clientResponse) {
var client = http.createClient (port, hostname);
var request = client.request (method, url, headers);
request.addListener ('response', function(response){
response.addListener ('data', function(chunk){
// forward data to clientResponse..
}
response.addListener ('end', function(){
// end clientResponse..
}
});
clientResponse.addListener('end', function(){
// this never gets called :(
// I want it to terminate the request/response created just above
}
}