创建通知服务的最佳做法是什么,例如在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. 在Android中创建服务的最佳方法是什么?
- 3. 保护网站管理部分的最佳做法是什么?
- 4. 最佳做法是什么?
- 5. 在Static ASP.NET网站中实施网站搜索的最佳做法是什么?
- 6. Grails创建服务是做什么的?
- 7. 设计SOA WCF Web服务时的最佳做法是什么?
- 8. 图像服务的最佳做法是什么?
- 9. 什么是在Android项目中创建包的最佳做法
- 10. 创建数百个对象的最佳做法是什么?
- 11. 创建统一菜单的最佳做法是什么?
- 12. 创建自定义例外的最佳做法是什么?
- 13. 创建Spring搜索表单的最佳做法是什么?
- 14. 创建AJAX导航的最佳做法是什么?
- 15. 创建自动生成ID的最佳做法是什么
- 16. 创建邀请码的最佳做法是什么?
- 17. 什么是创建移动网站和桌面网站的最佳方式?
- 18. 通知客户有关新创建的itemId的最佳做法
- 19. 什么是SSIS包的最佳网站
- 20. 创建移动Web服务API的最佳方式是什么?
- 21. 什么是创建一个完整的Flash网站的最佳方法
- 22. 会员网站的网页设计最佳做法是什么? blah.com/username?
- 23. 通过实时验证创建Ember表单的最佳做法是什么?
- 24. 服务器通信的最佳方法是什么?
- 25. log4cxx的最佳做法是什么?
- 26. 什么是ViewModel的最佳做法
- 27. 为php网站做网站翻译文件的最佳方式是什么?
- 28. 将网站服务嵌入其他网站的最佳方法
- 29. 沙盒网站的最佳做法?
- 30. ping /通知.NET Windows服务的最简单方法是什么?
您使用哪种服务器端语言? – 2012-02-25 21:26:56
@Martin它的php – Bader 2012-02-25 21:31:05