Я пытаюсь решить, как сделать потоковую передачу для IE и длительный опрос, не сворачивая сервер. Вот что я имел в виду.
У меня будет сервлет с именем: TimeServlet.
в doGet или doPost (). Я приостановлю запрос и отправлю время каждую секунду.
....
suspend()
while(!stopped){
request.writeln(new Date().toString());
}
или с Планировщиком и Runnable, но вы получите точку.
На клиенте в javascript я создам ajax-соединение.
Мои большие вопросы:
1 - Как сделать потоковую передачу с IE? с Firefox и Chrome я читаю данные, когда readyState == 3, но в IE данные доступны только на readyState == 4.
2 - Как я могу сделать длинный опрос в этом примере? Длинный блок опроса, пока на сервере не было данных для отправки, но в этом примере серверу всегда будет что-то выдвинуть, поэтому клиент будет делать что-то вроде while (true) и заполнять сервер. Я полагаю, что я должен сделать что-то подобное
ajax.push (null) ... on readyState == 4 -> read ... после этого setTimeout (resendRequest, 1); // 1 сек?
есть кто-то с таким образцом?
мой код отлично работает для FF и Chrome, но сейчас я ищу IE и Opera.
EDIT
Я обнаружил, что могу использовать XDomainRequest в IE для потоковой передачи. Это должно быть в коде вашего сервера:
response.setHeader ( "Access-Control-Allow-Origin", "*");
Я пока не буду отвечать на этот вопрос, потому что я не знаю, как определить, что соединение установлено.
с Ajax это было легко .. ReadyState == 4. но я не знаю для XDomainRequest.
Мне нужно иметь возможность вызывать некоторые обратные вызовы JavaScript, когда соединение закрыто. Есть идеи?