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

服务器使用serverside作为java rest Web服务发送事件,java,web-services,rest,Java,Web Services,Rest,目前正在处理服务器发送的html5事件。我制作了一个servlet并设置 response.setContentType(“文本/事件流”) 就这样。现在,我在客户端从这个servlet获得更新,客户端代码如下: <script > if(typeof(EventSource)!=="undefined") { var url = 'http://localhost:8080/KnockOut/DateFeed.j

目前正在处理服务器发送的html5事件。我制作了一个servlet并设置
response.setContentType(“文本/事件流”)
就这样。现在,我在客户端从这个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>
请帮帮我。

我得到了答案

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";
    }
}

出现了什么错误?Firefox无法在上建立与服务器的连接。eventSource=新的eventSource(url);使用
http://localhost:8080/
直接在浏览器中?是的。问题是我必须在哪里对“文本/事件流”做出Web服务的响应头;我想我在这里遇到了错误。我不知道如何使用rest web服务指定“response.setContentType(“text/event stream”);”。我已经体验过@products(“text/html”、application/xml、application/json)…但不知道文本/事件流设置内容头的方式似乎是正确的。这是一个(工作?)。也许你可以修改一个REST服务。请注意UTF-8编码设置。
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";
    }
}