使用Servlet作为服务器发送事件(SSE)的服务器

时间:2012-02-27 10:10:51

标签: servlets jboss server-sent-events

我使用servlet作为我的服务器将更新发送到我的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>

这是我的servlet代码

public void doPost(HttpServletRequest request,HttpServletResponse response){

    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中部署了我的servlet,并且servlet根本没有被jsp文件调用。 servlet开头的print语句没有执行。

1 个答案:

答案 0 :(得分:2)

您是否可以直接访问Servlet,而不是从javascript脚本访问?

无论来自javascript的调用如何,您都需要首先仔细检查此Servlet是否可访问。