2016-01-04 5 views
0

Я пытался использовать HTML5 SSE в приложении grails. Ниже приведен пример кода в действии:HTML5 SSE в Grails

def push(){ 
    println "Inside action..." 
    response.setContentType("text/event-stream"); 
    response.setCharacterEncoding("UTF-8"); 
    render("data: ${System.currentTimeMillis()}"); 
} 

стороне клиента код:

<script type="text/javascript"> 
    if(typeof(EventSource) !== "undefined") { 
     var source = new EventSource("push"); 
     source.onmessage = function(event) { 
      console.debug("event triggered..."); 
      document.getElementById("result").innerHTML += event.data + "<br>"; 
     }; 
     source.onerror = function(event) { 
      console.log(event.message); 
     } 
    } else { 
     document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events..."; 
    } 
</script> 

Но OnMessage событие не получает сигнал. onerror запускается и печатает undefined.It показывает правильное действие, но не передает данные.

Я также попытался:

response.outputStream.write(...........) 
response.outputStream.flush() 

, но не работает.

Просьба предложить.

ответ

0

Ну, я решил. Я использовал:

PrintWriter writer = response.getWriter(); 

    writer.write("data:"+System.currentTimeMillis()+"\n\n") 

и он работал.

+0

Здравствуйте, Vivek, как вам удалось очистить данные и не закрывать соединение после того, как контроллер/действие закончено? – user3621841