6

Web ページに通知を送信するための Spring ベースのフレームワークはありますか。http://www.w3schools.com/html5/tryit.asp?filename=tryhtml5_sseを見たことがあります。また、ほとんどのブラウザをサポートできるものを探しています。サーバー側コードのこの機能のための Spring のフレームワークまたはアドオンはありますか? そして、ブラウザでこれをサポートするjqueryフレームワークはありますか?

ティア。

4

3 に答える 3

5

「ロングポーリング」方式を使用しました。基本的に、ページの読み込み時にサーバーに ajax リクエストを送信してデータを取得します。サーバーは、データが利用可能になるまで待機してから応答します。クライアントとサーバーでは、サーバー上で実行されるスレッドが多すぎるのを避けるために、30 秒ごとに要求をタイムアウトにすることができます。クライアントは、タイムアウト後にリクエストを再発行するだけです。

このサイトは、jQuery を使用したロング ポーリングの優れた紹介を提供します。

Springには、これをサポートする明示的な機能(ポーリングスレッドのプールなど)は実際にはありませんが、知る限り、Spring MVC 3.2の新しい非同期サポートを調べることができます

于 2012-08-16T22:20:06.907 に答える
1

以下のように独自のサーブレットを作成できます。詳細については、リンクを参照してください。これはサーブレットで機能するため、Spring MVC コントローラーでも機能する可能性があります。

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

}
于 2012-08-17T13:47:36.897 に答える
0

setInterval()それを使用する私の方法は、通知を取得するための jQuery AJAX 呼び出しと一緒にjavascript のメソッドを使用することです。ドキュメントの準備ができたら、これを呼び出します(jspで): setInterval(callMe, 30000)

JS ファイル内:

function callMe(){
...

  $.ajax({
  type: "GET",
  url: "ajaxNotifications",
  success: function(count){
  alert( "You have: " + count + "notifications now" );
  //stick it to #element or DIV or .class where ever you want.
  }
  error:function(){
  ...
  }
 });
}

そして最後にSpringコントローラーで:

@RequestMapping(value="/ajaxNotifications", method = RequestMetho.GET)
public @ResponseBody String getMeCount(HttpServletReuest req, HttpServletRespones resp){
//get the desired values from req
...
//fire a reuest via service layer to the database for getting notifs number
...
//Don't forget to return it as a String, be it error or count.

}

これがあなたに何らかのアイデアを与えたり、この質問に対する答えを探している他の誰かに役立つことを願っています. :)

于 2014-12-21T20:10:29.743 に答える