Я пытаюсь реализовать "Длинный опрос" по Торнадо + Jquery.Проблема в том, что: после установления опроса я закрываю IE (не другой браузер), соединение остается живым, и программа продолжает работать, пока не достигнет моего состояния выхода.
server
class Poll(BaseHandler):
@tornado.web.asynchronous
def post(self):
self.get_data(callback=self.async_callback(self.on_finish))
print("Exiting from async.")
def get_data(self, callback,t=30):
data={}
data["t"]=datetime.datetime.now()
if self.request.connection.stream.closed():
print "Connection closed"
return
if t:
tornado.ioloop.IOLoop.instance().add_timeout(time.time() + 2, lambda: self.get_data(callback, t-1))
else:
callback(data)
def on_finish(self,data):
self.write(json.dumps(data))
self.finish()
Client:
$.ajax({url: "/poll",
type: "POST",
dataType: "json",
async:true,
success: function(data){
alert(data)
interval = window.setTimeout(ldy.poll, 0);
}
});
Если я использую FF или Chrome.Когда я закрываю браузер, self.request.connection.stream.closed () превратится в ИСТИНА, возвращенную проблему, но для IE это всегда Ложь.Таким образом, если пользователь переключается между двумя страницами (используя длительный опрос), ресурсы сервера быстро истощаются, и каждый щелчок будет зависать до завершения одного из опросов.Зачем?и как совать это.Помогите!Помогите!Т_Т