当前位置: 首页 > 知识库问答 >
问题:

服务器发送的使用jsp的事件不工作

郑曜灿
2023-03-14
  <%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
  <%
    response.setContentType("text/event-stream;charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Connection", "keep-alive");

  %>


  <%
    Date date = new Date();
    out.write(+date.toString()+);
    out.flush();
    try {
    Thread.currentThread().sleep(5000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    %>
<!DOCTYPE html>
<html>
<body>
     <h1>Getting server updates</h1>
     <div id="result"></div>

     <script>
     if(typeof(EventSource)!=="undefined")
     {
         var source=new EventSource("date.jsp");
         source.onmessage=function(event)
         {
             document.getElementById("result").innerHTML+=event.data + "<br>";
         };
     }
     else
     {
         document.getElementById("result").innerHTML="Sorry, your browser does not support   server-sent events...";
     }
    </script>

</body>
</html>

共有1个答案

云新知
2023-03-14
<!DOCTYPE html>
<html>
    <body onLoad = RegisterSSE()>
          <h1>Getting server updates</h1>
          <div id="result"></div>
          <script>
              function RegisterSSE()
              {
                  alert("wtf");
                  if(typeof(EventSource) != "undefined")
                  {
                      var source = new EventSource ("http://localhost:8080/web_war_exploded/date.jsp");
                      source.onmessage = function(event)
                      {
                          document.getElementById("result").innerHTML += event.data + "<br/>";
                      };
                  }
                  else
                  {
                      document.getElementById("result").innerHTML = "Sorry, your browser does not support   server-sent events...";
                  }
              }
          </script>
    </body>
    </html>
<%
    response.setContentType("text/event-stream;charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    response.setHeader("Connection", "keep-alive");

    Date date = new Date();
    out.write("event: server-time\n\n");
    out.write("data: "+date.toString() + "\n\n");
    out.flush();
    try {
        Thread.currentThread().sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
%>
 类似资料:
  • 我在tomcat 8.0上使用java尝试了一个SSE(服务器发送事件)。以下是我注意到的几件事。 我单击一个按钮,它会自动向servlet发出请求。执行Servlet的GET方法,返回事件流。一旦收到完整的数据流,页面会再次自动发出另一个请求,再次接收相同的数据!!!我没有无限循环!!! > 什么是正确的方法来确保事件流只发送一次到同一个连接/浏览器会话? 什么是正确的方法来确保事件流被关闭并且

  • 概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“

  • 概述 客户端代码 概述 建立连接 open事件 message事件 error事件 自定义事件 close方法 数据格式 概述 data:数据栏 id:数据标识符 event栏:自定义信息类型 retry:最大间隔时间 服务器代码 参考链接 概述 传统的网页都是浏览器向服务器“查询”数据,但是很多场合,最有效的方式是服务器向浏览器“发送”数据。比如,每当收到新的电子邮件,服务器就向浏览器发送一个“

  • 我正在尝试在Ruby Grape API上创建服务器发送的事件。问题是,连接似乎总是很快关闭,因为我一直在测试网页上看到连接关闭事件。 客户端连接到服务器,因为我可以看到正在调用的方法,但我想知道为什么连接不是恒定的,为什么我没有收到我使用Thread发送的数据。 以下是我的Ruby代码: 以下是我的Javascript: 编辑:我使用GET方法实现了它(我将Grape::API更改为Sinatr

  • 并在config/bootstrap.php中添加了以下行: 在config/events.php中 在lib/event/mylistener.php中 PS:我使用Cakephp事件是因为它允许我在一个地方从不同的控制器收集所需的数据,然后从那里,我可以创建事件流(服务器发送的事件)。如果有更好的选择,请分享。

  • 我使用nghttp2实现了一个REST服务器,它应该使用HTTP/2和服务器发送的事件(由浏览器中的EventSource使用)。然而,基于这些例子,我不清楚如何实现SSE。像在< code>asio-sv.cc中那样使用res.push()似乎不是正确的方法。 做这件事的正确方法是什么?我更喜欢使用nghttp2的C API,但是C API也可以。