目前正在处理服务器发送的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";
}
请帮帮我。
答案 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";
}
}