2012-02-27 16 views
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分ごとに変更したいと思います。出来ますか?はいの場合、どのように?あなたはミリ秒

にタイムアウトとretry:を送信する必要があなたの応答で

+0

は、サーバー側でストリームを閉じていないしようとしたことがあり、そして10分ごとにこのストリームにメッセージを送信しますか? –

答えて

2

は、したがって、あなた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を参照してください。

0

コンテンツタイプのため、上記の解決策はChromeで機能しません。

クロームはこの見込ん:

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

「イベント・サーバーとしてのJavaサーブレットとmilestonenext HTML5サーバー送信されたイベントのサンプルを」グーグルサンプルを探す

関連する問題