Я работаю над приложением long-poll, которое использует node.js в качестве сервера. Конкретная задача состоит в том, чтобы сразу узнать, а затем пользователь уходит в автономный режим. Итак, я должен слушать событие request.close, верно?
Я скопировал следующий фрагмент кода из Как проверить, было ли прервано соединение на сервере node.js
var http = require("http"),
util = require("util");
var httpServer = http.createServer(function(req, res) {
util.log("new request...");
// notify me when client connection is lost
req.on("close", function(err) {
util.log("request closed...");
});
// wait with response for 15 seconds
setTimeout(function() {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.write("response");
res.end();
util.log("response sent...");
}, 15000);
});
httpServer.listen(8888, "127.0.0.1");
util.log("Running on 8888");
Я не могу заставить его работать должным образом:
Я открываю в браузере определенный URL, связанный с сервером node.js
Сразу после этого нажмите кнопку «Стоп».
Node.js ждет 15 секунд, как будто соединение еще живо,
а затем регистрирует «ответ отправлен».
Я отключил nginx, чтобы избежать каких-либо проблем, результат тот же. Я также попытался прослушать событие req.connection.on ("close"), результат снова тот же. Версия nodejs - 0.4.12.
Что может быть не так?