服务器使用服务器端作为java rest Web服务发送事件

时间:2014-01-21 12:39:44

标签: java web-services rest

目前正在处理服务器发送的html5事件。我制作了一个servlet并设置了     response.setContentType("text/event-stream");  就这样。现在我在客户端从这个servlet获得更新,我的客户端代码如下:

  <script >
            if(typeof(EventSource)!=="undefined")
        {

            var url = 'http://localhost:8080/KnockOut/DateFeed.jsp';
            eventSource = new EventSource(url);
            eventSource.onmessage = function (event) {
                var theParagraph = document.createElement('p');
                theParagraph.innerHTML = event.data.toString();
                document.body.appendChild(theParagraph);
            }
        }
        else
        {
            document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events...";
        }
    </script>

但是当我更改url以调用用java编写的其他完整web服务时,它会显示一些错误,并且我注意到能够获得更新的输出。

REST网络服务代码是:

 @GET
    public String getXml(@Context HttpHeaders header, @Context HttpServletResponse response) {
        response.setHeader("cache-control", "no-cache");
        response.setContentType("text/event-stream");
        return "dataas: " + (new java.util.Date()).toString() + "x\n\n";
    }

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我在这里得到了答案

import java.io.PrintWriter;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;
import org.glassfish.jersey.media.sse.EventOutput;
import org.glassfish.jersey.media.sse.OutboundEvent;
import org.glassfish.jersey.media.sse.SseFeature;

/**
 * REST Web Service
 *
 * @author Irshad kk
 */

@Path("WS")
@RequestScoped

public class SSEResource {
    @Context
    private UriInfo context;

    /**
     * Creates a new instance of SSEResource
     */
    public SSEResource() {
    }

    @GET
    @Produces(SseFeature.SERVER_SENT_EVENTS)
    public String getServerSentEvents() {
        System.out.println("haii" + System.currentTimeMillis()); 
        return "data: " + "irshad" + System.currentTimeMillis() + "\n\n";
    }
}
相关问题