我有一系列实时事件。我正在开发一个前端来向用户显示此流,以便:
流中的每个事件都有一个与之关联的状态,可以随时更改,因此我不断查询服务器最后x分钟的数据并在客户端相应地更改状态。
我的第一次尝试是使用分页。但是,这引起了以下问题:
这种互动是否有设计模式? Twitter使用infinite scrolling。这种模式很棒但我不太确定如何使其适应情况:
有什么建议吗?
答案 0 :(得分:0)
听起来将排序转移到前端是获得理想结果的最佳方式。我不会深入到无限滚动/分页,因为那里可能有更好的资源,但基本上跟踪检索的最后一行(或页面)并将其与您的请求一起发送。希望这有助于阻止您实施该问题的其他问题。
除此之外:根据数据的实时性,您应该查看其他获取数据的方法,例如长轮询或WebSockets,而不是每隔X分钟重复一次。
{
'status' : 'OK',
'last_row_retrieved': 20,
'events' : [{
'html' : "<div>The regular response</div>",
'sort_attr_1' : 10,
...
}]
}
//Maintain a container for the results you get each call.
var myevents = [];
$.post(...,function(response) {
var data = $.parseJSON(response);
var events = data.events;
for(var i=0;i<events.length;i++) {
//Save each event
myevents.push(events[i]);
}
DisplayEvents();
});
//When user tries to sort do so with custom sorting function
myevents.sort(function(a,b) { return a.sort_attr_1 - b.sort_attr_2;});
DisplayEvents();
function DisplayEvents() {
//loop through myevents and display them however you're doing it
}