服务器使用serverside作为java rest Web服务发送事件
目前正在处理服务器发送的html5事件。我制作了一个servlet并设置服务器使用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
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";
}
}