2012-02-25 75 views

回答

0

您可以使用WebSocket API作爲真正的推送服務(而不是ajax輪詢)。但它是HTML5的一部分,目前不受所有瀏覽器和Web服務器的支持。

1

這是調用長輪詢(AJAX的類型)。

我會試着描述一下你使用PHP和JS的情況,就像Facebook一樣。

  • 您發送一個AJAX請求到服務器。
  • 無限循環開始在服務器端
<?php 
$seconds = 0; 
while(true) { 
    if ($seconds >= 55) { 
     die("no_notifications"); 
    } 
    if (false !== ($notifications_json = getNotifications()) { 
     echo $notifications_json; 
     die(); 
    } 
    $seconds++; 
    sleep($TIME_TO_WAIT_BEFORE_NEXT_CHECK); //this number should be based on your performance 
} 
?> 
  • 當有新的通知,腳本模具() S和響應由JavaScript
  • 新的請求被髮送到處理服務器,再次,等待新的通知

隨着JA vascript(我會告訴你用jQuery的例子),你可以使用像

$(function() { 
    pollForNotifications(); 
}); 

function pollForNotifications() { 
    $.get("/notifications", function(response) { 
     if (response != "no_notifications") { 
      alert("You've got one new notification!"); 
      //more proccessing here 
     } 
     pollForNotifications(); 
    }); 
} 

請記住,有在特定瀏覽器的時間限制來完成請求!即使您沒有任何通知,但在一段時間(55秒)之後,您應該輸入die()以防止出現問題(此預防包含在上面的腳本中)!

+0

當我需要發送請求? – Bader 2012-02-25 21:34:12

+0

@AdhamEnaya:一旦在頁面加載(或當你需要啓動的通知輪詢)和腳本死後(當用戶獲取請求) – 2012-02-25 21:35:55

+0

@AdhamEnaya:添加一個jQuery例子,使其更容易爲你 – 2012-02-25 21:38:45

0

你可能想看看Pusher。它會處理推送通知並支持許多瀏覽器。

相關問題