2012-07-03 2 views
1

Я только что узнал о модели кометы (длинный опрос) и очень любопытно реализовать простой пример с Tomcat6 в качестве контейнера. То, что я пытаюсь сделать здесь, - я собираюсь назвать сервлет, который генерирует случайное число от 1 до 20 и на основе этого случайного числа он должен ждать этого количества секунд, прежде чем отвечать на запрос.Выполнение модели кометы с Tomcat6

Пример: если сгенерированное случайное число равно 10, сервлет должен подождать 10 секунд, прежде чем отправить ответ.

Вот мой сервлет, который реализует метод CometProcessor

public class RandomNumberGenerator extends HttpServlet implements CometProcessor { 

doPost:

 PrintWriter out =response.getWriter(); 
     Random r = new Random(); 
     int randomInt = r.nextInt(20) + 1; 
     out.print(randomInt); 
     out.flush(); 
     out.close(); 

Теперь, как я реализовал CometProcessor У меня есть метод события:

@Override 
    public void event(CometEvent event) throws IOException, ServletException { 

    } 

Что я не могу понять, что, что Iv'e делать с этим event метод делать то, что я хочу.

Что я знаю здесь, их будет несколько событий я могу обрабатывать внутри этого метода, как: BRGIN,READ,END,ERROR

Должен ли я использовать события, как это?

if (event.getEventType() == CometEvent.EventType.BEGIN) { 
    event.setTimeout(numberOfSecondToWait); 
} 

Я совершенно запутался, this учебник показаться немного сложным для меня.

ответ

2

Я недавно написал сообщение в блоге на WebSockets and Comet и попросил изобретателя «кометы», чтобы высказать свое мнение.

Таким образом, Алекс сказал WebSockets replace Comet.

Итак, хотя люди по-прежнему используют комету, в конечном итоге они будут заменены WebSockets, поскольку они были специально созданы для решения проблемы, с которой взломали решения Comet.

Я бы рекомендовал вам сфокусировать внимание на WebSockets.

+1

все браузеры поддерживают WebSockets? – JAVAGeek

+1

Текущее состояние игры с поддержкой браузера можно увидеть здесь: http://caniuse.com/#search=websockets Стандартная практика, когда WebSockets недоступны, - использовать [web-socket-js polyfill] (https: //github.com/pusher/web-socket-js). Для старых браузеров вы можете посмотреть резервные копии комет или просто перейти к стандартным опросам. Последний не идеален, но, вероятно, так я поеду - или постепенно улучшаю свое приложение, и если браузер не поддерживает WebSockets, тогда пользователь получит уменьшенную функциональность. – leggetter

+1

Сегодня я реализовал комету с использованием DWR и работает как ожидалось ':)'. Ну, я определенно попробую веб-сокеты, поскольку это кажется очень интересным. Спасибо вам ! – JAVAGeek