我在寻找这种情况的答案时遇到了麻烦。
我们的系统服务器具有不断更新的日志。 日志的视图很糟糕!而且非常凌乱。 所以我想构建一个显示日志的Web应用程序,并提供过滤选项以使我们的生活更轻松:)。
所以这就是我的计划: 1)我将加载最多50个日志行(因此打开时不会空白); 2)我会继续为控制台写的每一行提取信息。
那么,我该如何处理第2步?如何与服务器日志同步?
此外,当我加载50行时,可能会在控制台中放置一个新行alrdy,这会降低日志查看器中提供的数据的完整性。
BTW我使用PuTTY查看日志控制台。
请原谅我的英语不好。谢谢你提前:))
答案 0 :(得分:0)
好的,所以如果你打算用Angular做这个完全客户端的话,你需要:
http://www.example.com/my-console-feed/
这样的东西。你可能已经有了这个。$interval
轮询服务器。如果您使用网络套接字操作,也许可以进行一些连续的输入。
所以你可以建造一个看起来像这样的工厂:
(function() {
'use strict';
angular
.module('myApp')
.factory('pollingFactory', pollingFactory);
function pollingFactory($http, $interval) {
return function() {
// 60000 is 1 minute
var duration = 60000;
// log API endpoint
var myLogAPIEndpoint = 'http://www.example.com/my-console-feed/';
// this will hit the API every minute
$interval(function() {
// poll the api for new logs
$http({
url: myLogAPIEndpoint,
method: 'GET'
})
.success(function(response) {
// do something with the response
})
}, duration);
}
}
})();
如果您打算这样做,我会使用$ q作为promise库,并在您的控制器中,当promise解析时,使用新日志更新范围内的模型。如果您使用的是ng-repeat
,如果日志具有唯一ID,我还建议您使用track by
来提高性能。
以下是a fiddle每3秒轮询一次API。