創建通知服務的最佳做法是什麼,例如在Facebook網站中。我發現定期發送http請求以檢查服務器上是否有更新是很不錯的。創建通知服務(如Facebook網站)的最佳做法是什麼?
回答
您可以使用WebSocket API作爲真正的推送服務(而不是ajax輪詢)。但它是HTML5的一部分,目前不受所有瀏覽器和Web服務器的支持。
這是調用長輪詢(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()
以防止出現問題(此預防包含在上面的腳本中)!
當我需要發送請求? – Bader 2012-02-25 21:34:12
@AdhamEnaya:一旦在頁面加載(或當你需要啓動的通知輪詢)和腳本死後(當用戶獲取請求) – 2012-02-25 21:35:55
@AdhamEnaya:添加一個jQuery例子,使其更容易爲你 – 2012-02-25 21:38:45
你可能想看看Pusher。它會處理推送通知並支持許多瀏覽器。
- 1. 保護網站管理部分的最佳做法是什麼?
- 2. Grails創建服務是做什麼的?
- 3. 在Static ASP.NET網站中實施網站搜索的最佳做法是什麼?
- 4. 圖像服務的最佳做法是什麼?
- 5. 設計SOA WCF Web服務時的最佳做法是什麼?
- 6. 創建自定義例外的最佳做法是什麼?
- 7. 什麼是SSIS包的最佳網站
- 8. 什麼是創建一個完整的Flash網站的最佳方法
- 9. 會員網站的網頁設計最佳做法是什麼? blah.com/username?
- 10. 什麼是ViewModel的最佳做法
- 11. 爲php網站做網站翻譯文件的最佳方式是什麼?
- 12. 將網站服務嵌入其他網站的最佳方法
- 13. ping /通知.NET Windows服務的最簡單方法是什麼?
- 14. 沙盒網站的最佳做法?
- 15. iPhone上的通知的最佳做法
- 16. 在網站中的兩個用戶之間實現呼叫服務的最佳做法是什麼?
- 17. 最佳做法:喜歡網站的按鈕或網站的Facebook頁面?
- 18. 跟蹤更多域名的多語言網站的最佳做法是什麼?
- 19. ASP.NET緩存,什麼是最佳做法
- 20. WCF休息 - 最佳做法是什麼?
- 21. Nginx和runit ....什麼是最佳做法
- 22. 加速使用CMS進行網站開發的最佳做法是什麼?
- 23. 什麼是在主機上搜索mvc eTrade網站的最佳做法
- 24. 當前設置ASP.NET成員資格網站的最佳做法是什麼?
- 25. 在網站上實現社交分享按鈕的最佳做法是什麼?
- 26. 關於電子商務網站的最佳CMS是什麼?
- 27. 存儲服務檯業務規則知識庫的最佳方法是什麼?
- 28. Angular2 - 更新組件時通知指令的最佳做法是什麼?
- 29. 建立簡單網站的最佳方式是什麼?
- 30. 在Codeigniter中創建多站點的最佳方式是什麼?
您使用哪種服務器端語言? – 2012-02-25 21:26:56
@Martin它的php – Bader 2012-02-25 21:31:05