2012-02-25 26 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。它会处理推送通知并支持许多浏览器。

相关问题