【发布时间】:2016-01-29 18:53:32
【问题描述】:
我正在开发一个社交网站。我使用以下代码实时显示用户的通知总数。
代码:
function load_notifications(){
$http.get('http://localhost:3000/load').success(function(data){
$scope.totalNotify = data.total;
});
};
load_pictures();
$interval(function(){
load_notifications();
},300);
基本上,这段代码以给定的时间间隔连续检查数据库,如果有一些变化,它会更新 $scope 值。但是当我尝试在不同的浏览器中使用两个不同的用户检查它时,它会因为轮询请求而阻塞浏览器。
有什么方法可以改进这种方法或有其他更好的选择吗? 我正在使用 PHP 和 AngularJS 构建我的应用程序。但我也对这个模块的其他选项持开放态度。
【问题讨论】:
-
频繁轮询会导致服务器负载。可能的解决方案:减少轮询频率,改用 web-sockets,租用更好的服务器
-
虽然 2 个用户不应该使服务器超载 - 你使用的是什么网络服务器?阿帕奇?
-
您可以在缓存数据的同时...
-
@Steve 是的,我正在 Apache 上进行测试。如果我想使用 web sockets,我需要使用 Node.js 吗?
-
@NuttyProgrammer 不需要 Node.js,在我的回答中添加了基于 PHP 的 Web 套接字引用。
标签: javascript php angularjs node.js