1

サーバーとしてサーブレットを使用して、jspクライアントに更新を送信しています(HTML5 SSEを使用)。これは私のjspコードです

<script type="text/javascript">

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

これは私のサーブレットのdoGetメソッドです。

response.setContentType("text/event-stream");  

        PrintWriter out = response.getWriter();  

        int messagesSent = 0;  

            out.print("data: {" + messagesSent++ + "}\n\n");  
            out.flush();  
            out.close();

これは正常に機能しており、サーバーはデフォルトで約3秒ごとに更新を送信しています。これを10分ごとに変更したいと思います。出来ますか?はいの場合、どのように?

4

2 に答える 2

2

retry:応答では、ミリ秒単位のタイムアウトで送信する必要があります

したがって、次doGetのようになります。

response.setContentType("text/event-stream");   

PrintWriter out = response.getWriter();  

int messagesSent = 0;  

out.print("retry: 600000\n"); //set the timeout to 10 mins in milliseconds
out.print("data: {" + messagesSent++ + "}\n\n");  
out.flush();  
out.close();

EventSourceオブジェクトの詳細については、HTML5Rocks.comを参照してください。

于 2012-02-28T00:01:08.437 に答える
0

上記のソリューションは、ContentTypeが原因でChromeでは機能しません。

Chromeはこれを期待しています:

response.setContentType("text/event-stream;charset=UTF-8");

グーグルのサンプル「milestonenextHTML5サーバー-イベントサーバーとしてJavaサーブレットを使用して送信されたイベントサンプル」を検索します。

于 2013-07-15T14:13:32.203 に答える