Как обнаружить, что пользователь отменяет запрос - PullRequest
4 голосов
/ 25 апреля 2011

Я пробую 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  
    }
}

Ответы [ 2 ]

2 голосов
/ 25 апреля 2011

Оказывается, я должен связываться с событием "close" вместо события "end" запроса. Это действительно имеет смысл.
Я публикую это здесь для всех, кто может столкнуться с той же проблемой:

clientResponse.addListener('close', function(){  
    // this gets called when the user terminates his request  
}
0 голосов
/ 25 апреля 2011

Возможно, вам нужен тайм-аут в ответ здесь ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...