2013-05-18 3 views
1

Я работаю над сервлетом, но столкнулся с проблемой. SSE отлично работает с Firefox, но не может работать с Chrome/Safari. Подобный код в PHP может работать плавно во всех трех браузерах, упомянутых выше. Как решить проблему? Спасибо!!Сервлет Сервера, отправленное сервером, не работает с Chrome/Safari

Это мой сервлет код:

response.setContentType("text/event-stream;charset=UTF-8"); 
    response.addHeader("Cache-Control", "no-cache"); 
    PrintWriter out = response.getWriter(); 
    out.print("data: " + new Date()); 
    out.flush(); 
    out.close(); 

И это мой JS код:

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

BTW, я использую Glassfish.

ответ

1

Вы можете изменить строку out.print ("data:" + new Date()); примерно out.print ("data:" + new Date() + "\ n \ n"); браузер, как правило, застревает, не находя двойного «\ n» в конце сообщения данных SSE.

+0

Большое спасибо. Оно работает!!! – Codinfox