应用程序我每秒都在处理火灾数据更新,到目前为止我所做的工作非常好,但现在我遇到了问题。
基本上,我在完成从API获取整个数据后开始监听SSE(服务器发送的事件),这导致我刚获得的数据与收到的更新之间的未命中同步get正在运行。
开头的ajax通话时间大约是20,30秒,在那段时间我错过了一些项目的更新。
如果我在应用加载问题后立即开始收听SSE,那么如果我收到更新但我仍然没有收集该对象,那么无论如何都会丢失更新...
我在整个应用程序中使用Angular,代码在开头看起来非常相似:
var source = new EventSource('/updates');
$scope.items_01 = [];
$scope.items_02 = [];
$q.all([
getList(first, [], 0),
getList(second, [], 0)
])
.then(function (data) {
$scope.items_01 = data[0];
$scope.items_02 = data[1];
startStreaming();
});
function startStreaming() {
source.addEventListener('items_01', handleItems01Callback, false);
source.addEventListener('items_02', handleItems02Callback, false);
}
如何将获得的数据与获得的更新保持同步,以获取任何想法?
答案 0 :(得分:0)
立即开始收听SSE并缓冲传入的更新。获得完整快照后,开始应用更新。
我想到的潜在问题是某些更新可能已经应用于快照。您需要提供一些其他信息才能让您知道这些信息,以便您可以跳过这些更新。