сервер отправляет события с помощью сервлетов - PullRequest
1 голос
/ 27 февраля 2012

Я использую сервлет в качестве сервера для отправки обновлений моему клиенту jsp (с использованием HTML5 SSE). Это мой JSP код

<script type="text/javascript">

    if(typeof(EventSource)!=="undefined")
      {
      var source=new EventSource("server");
      source.onmessage=function(event)
        {
        document.getElementById("news1").innerHTML+=event.data + "<br />";
        };
      }
    else
      {
      document.getElementById("news1").innerHTML="Sorry, your browser does not support server-sent events...";
      }
      </script>

Это мой метод doGet для сервлетов.

response.setContentType("text/event-stream");  

        PrintWriter out = response.getWriter();  

        int messagesSent = 0;  

            out.print("data: {" + messagesSent++ + "}\n\n");  
            out.flush();  
            out.close();

Это работает нормально, и по умолчанию сервер отправляет обновления примерно каждые 3 секунды. Я хочу изменить это каждые 10 минут. Является ли это возможным? Если да, то как?

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

В вашем ответе вам необходимо отправить retry: с таймаутом в миллисекундах

Поэтому вы doGet должны выглядеть так ...

response.setContentType("text/event-stream");   

PrintWriter out = response.getWriter();  

int messagesSent = 0;  

out.print("retry: 600000\n"); //set the timeout to 10 mins in milliseconds
out.print("data: {" + messagesSent++ + "}\n\n");  
out.flush();  
out.close();

См. HTML5Rocks.com для получения дополнительной информации об объекте EventSource.

0 голосов
/ 15 июля 2013

Приведенное выше решение не работает с Chrome из-за ContentType .

Chrome ожидает этого:

response.setContentType("text/event-stream;charset=UTF-8");

Найдите пример поиска в Google "milestonenext Пример отправленных сервером событий HTML5 с сервлетом Java в качестве сервера событий"

...