0

jspを使用してサーバー送信イベントを実現したいのですが、機能しません。私のコードは以下のとおりですが、日付も表示されません

日付.jsp

  <%@ 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();
    }
    %>

私のex.htmlコードはfallowsです

<!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>

出力は次のとおりです。

サーバーの更新を取得する


日付も表示されません...

Tomact サーバーを使用していますが、コードに問題はありますか

4

1 に答える 1

0

body onLoad リスナーやボタン onClick リスナーなどの実行可能なものを使用する必要があります。jsp またはサーブレットへの正しいパスを使用する必要があります (WEB-INF フォルダー内に配置しないでください)。正しいイベント データ形式を使用する必要があり、"data:" プレフィックスと "\ n\n" サフィックス。

ex.html

<!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>

日付.jsp

<%
    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();
    }
%>

結局のところ、Googleを使用する必要があります。あなたの質問は新しいものではありません。以下のリンクを参照してください。

java-servlet-and-server-sent-events

java-web-app のプッシュ通知

how-push-notification-java-servlet-for-web-application

于 2014-02-01T18:35:02.190 に答える