HTML5服务器使用JavaServlet3和tomcat发送事件

HTML5服务器使用JavaServlet3和tomcat发送事件,html,tomcat,server-sent-events,Html,Tomcat,Server Sent Events,我试图在Eclipse中用Tomcat运行这段代码,但在客户端服务器没有得到任何输出。我应该在项目中包含一些库(jar文件、js文件…)吗?多谢各位 这两个文件: <html> <body onload ="registerSSE()" > <script> function registerSSE() { alert('test 1'); var source = new

我试图在Eclipse中用Tomcat运行这段代码,但在客户端服务器没有得到任何输出。我应该在项目中包含一些库(jar文件、js文件…)吗?多谢各位

这两个文件:

<html>
<body onload ="registerSSE()" >
    <script>
        function registerSSE()
        {
            alert('test 1');
            var source = new EventSource('http://localhost:8080/hello/sse');  
            alert('Test2');
            source.onmessage=function(event)
            {
                document.getElementById("result").innerHTML+=event.data + "<br />";
            };
            /*source.addEventListener('server-time',function (e){
                alert('ea');
            },true);*/
        }
    </script>
    <output id ="result"></output>

</body>
</html>
我需要哪个版本的tomcat?我还需要哪种连接器类型

\uweb.XML


演示
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
上海证券交易所
上海证券交易所
1.
上海证券交易所
*.html

我不知道EventResource,但我知道,若您能够在浏览器中打开资源,那个么它应该会让您领先一步

在web.xml中进行以下更改:-

  • 提供servlet的完整路径,其包名为-
    com.test.sse
  • 您可以在此处创建
    /*
    ,这样它将适用于每个URL

  • 进行此更改后,请尝试在浏览器中打开资源,看看是否有帮助。

    您希望输出结果是什么?您得到的响应是什么?同时尝试在浏览器本身中打开资源-@Ved I get nothing。我尝试在浏览器中打开页面,但我有相同的操作。没有结果!您的Web.xml似乎没有包含指向servlet的正确路径。在这里显示完整的代码以获得精确的答案。我现在不再得到错误,我看到消息
    System.out.println(“数据已发送!!!”+I)response.setContentType(“文本/事件流”)则页面仍在加载,并且由于循环而无法停止。我认为服务器不会附加文本,而是替换文本,这就是服务器无法显示页面内容的原因。你们怎么看?若你们在浏览器中打开它,修改代码如下-
    response.setContentType(“text/html”)嗯。。。正如我之前所说的,页面仍然在加载,我并没有从服务器输出,但无论如何都并没有错误!嗯。您的Servlet无法打开。尝试给出类似-
    /Test
    的URL模式,然后键入
    http://localhost:8080/hello/Test
    import java.io.*;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class sse extends HttpServlet {
       public void doPost(HttpServletRequest request, HttpServletResponse response) {
            try {
                System.out.println("SSE Demo");
                response.setContentType("text/event-stream");
    
                PrintWriter pw = response.getWriter();
                int i=0;
                while(true) {
                    i++;
                    pw.write("event: server-time\n\n");  //take note of the 2 \n 's, also on the next line.
                    pw.write("data: "+ i + "\n\n");
                    System.out.println("Data Sent!!!"+i);
                    if(i>10)
                    break;
                }
                pw.close();
            } catch(Exception e) {
                e.printStackTrace();
            }
        }
    
        public void doGet(HttpServletRequest request,HttpServletResponse response) {
            doPost(request,response);
        }
    
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>demo</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    
      <servlet>
            <servlet-name>sse</servlet-name>
            <servlet-class>sse</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>sse</servlet-name>
            <url-pattern>*.html</url-pattern>
        </servlet-mapping>
    
    </web-app>