ポーリングはサーバーにリクエストを送信するために随時、クライアントに時計の確立である、アクセス・サーバ・データ、単純で実装するのが最も簡単なメッセージのプッシュを達成するための一つの方法である、最大の欠点ブラウザがサーバに一定のリクエストが必要ですそれは資源の無駄で、その結果、多くの帯域幅を取ります
ここでJSのコードは次のとおりです。
1つの $(ドキュメント).ready(関数(){ 2 のsetInterval(20000を呼び出す); 3 })。 4 関数を呼び出し(){ 5 VAR XHR = $アヤックス({ 6 タイプ: "POST" 、 7 データ型: 'JSON' 、 8 URL: "Sys_msg.get_unRead_count.xhd" 、 9 データ: "" 、 10の 成功:関数(結果){ 11 VAR OBJ = 評価(結果); 12 IF(OBJ> MSG_COUNT) 13がある { 14 $ .ligerTip({ 15 内容:+ "あなたは<フォント色=赤>持っている" (OBJ-MSG_COUNT)+「</ FONT> 。記事新しい未読メッセージをチェックしてください! <BR> <a href='javascript:void(0)'onclick=\"window.top.f_addTab('Sys_msg','消息管理','personal/message/sys_msg.aspx')\">プロセスに< / A>」、 16 幅:240 、 17 // ; VAR WINH = $(ウィンドウ).height()、ウェハ内= $(ウィンドウ).width() 18は : - 、260 tIPW X // 気泡の位置、ディスプレイのバブル右下隅を設定 。19 Y:tipH - 80 、 20であります コールバック:関数(T){ 21である VAR I = 10; // 10秒のカウントダウン 22は CalcTimeに(T、I); 23である } 24 }); 25 } 26が MSG_COUNT = OBJ; 27 28 } 29 }); 30 } 31である VAR = $ tipH(ウィンドウ).height()、tIPW = $(ウィンドウ).width(); //は、画面サイズ取得する 32 の機能 CalcTimeに(T、I)を//この関数は、再帰カウントダウンすることによって達成される 33は 、{ 34で i-- ; 35 (I> = 0 ) 36 のsetTimeout(?関数(){ 37 [ CalcTimeに(T、I); 38れる } 1000 ) 39 :$(T)。 ;削除() 40 }
背景コード:
1 パブリック クラスSys_msg 2 { 3 パブリック 静的 BLL.Sys_msg MSG = 新しいBLL.Sys_msg()。 4 パブリック 静的 Model.Sys_msgモデル= 新しいModel.Sys_msg()。 5 6 公共のHttpContextコンテキスト。 7 公共の 文字列EMP_ID; 8 公共の 文字列EMP_NAME。 9 公共HttpRequestの要求。 10の 公共の 文字列のuid; 11 12 13 公衆Sys_msg() 14 { 15 } 16 17 公衆Sys_msg(のHttpContextコンテキスト) 18 { 19 コンテキスト= 文脈。 20 リクエスト= context.Request。 21 22 VaRのユーザー情報= 新しいUSER_INFO()。 23 従業員= userinfo.GetCurrentEmpInfo(コンテキスト)。 24 25 EMP_ID = employee.id。 26 EMP_NAME = PageValidate.InputText(employee.name、50 )。 27 UID = PageValidate.InputText(employee.uid、50 )。 28 29 } 30 31 32 公衆 INT get_unRead_count() 33 { 34 列 serchtext = $ " 1 = 1 " 。 35 // int型行数= 0; 36 serchtext + = " とisRead = 0 " 。 37 serchtext + = " とユーザID N '%のような" + EMP_ID + " %' " ; 38の データセットDS = msg.GetList(serchtext)。 39 //行数= ds.Tables [0] .Rows.Count。 40 リターン ds.Tables [ 0 ] .Rows.Count。 41 } 42 43 }