Re[6]: "Живые данные" на html страничках. Как такое сделать?
От: baranovda Российская Империя  
Дата: 17.10.07 07:16
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну есть один способ — вечно открытое соединение. Это в некотором смысле противоречит духу протокола HTTP/1.1, но работает. При условии того, что клиентский джаваскрипт достаточно умен для рестарта вечно открытого соединения при его обрыве. А также с учетом того, что количество одновременно открытых сокетов у сервера ограничено.


Да, принцип может быть таким: скрипт в цикле пишет в Output-поток с отключенной буферизацией, в конце каждого цикла делается принудительный flush. Для того, чтобы броузер клиента не сдох, скрипт через каждые N итераций заставляет броузер клиента переобновить страницу при помощи JavaScript или просто посылает заголовок refresh.

response.write("<html><head><meta http-equiv="refresh" content="1000; URL=index.jsp></head>");
for (int i = 0; i < 1000; i++)
{
   response.write("<h1>" + i + "</h1>");
   response.flush();
   sleep(1000);
}


На таком принципе работают некоторые чаты.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.