использование сервлета в качестве сервера для отправленных событий сервера (SSE) - 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>

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

public void doPost (запрос HttpServletRequest, ответ HttpServletResponse) {

    try{
    System.out.println("Begin for session: " + request.getSession(true).getId() + " " + response.getWriter());  
response.setHeader("pragma", "no-cache,no-store");  
response.setHeader("cache-control", "no-cache,no-store,max-age=0,max-stale=0");  

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

PrintWriter out = response.getWriter();  

int messagesSent = 0;  
while (true) {  
    out.print("data: {" + messagesSent++ + "}\n\n");  
    out.flush();  
     }} catch(Exception e){System.out.println(e);}

Нет ответа от сервера. Я развернул свой сервлет в jboss, и сервлет вообще не вызывается из файла jsp. Оператор print в начале сервлета не выполняется.

1 Ответ

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

Можете ли вы получить доступ к сервлету напрямую, т.е. не из сценария javascript?

Сначала вам необходимо проверить, доступен ли этот сервлет независимо от вызова из javascript.

...