我希望在用户离线时显示消息并禁用所有编辑功能,然后在用户重新联机时重新启用它们。现在我正在使用navigator.onLine,在某些情况下,它实际上并没有很好地检测到连接性。
确定Drive Realtime API是否已连接的最佳方法是什么?
答案 0 :(得分:3)
我们已成功使用实时文档上的“保存状态更改”事件来确定连接的脱机/联机状态。这意味着在您尝试对文档进行更改之前,您不会知道自己处于脱机状态,但如果知道状态至关重要,则可以添加心跳文档更改。
答案 1 :(得分:1)
Grant的答案中可能需要考虑的一个重要因素是,不能依赖'isSaving'来确定新的实时文档或更新已完全保存到服务器中。
要确保断开连接或页面关闭是安全的,您还必须检查document.saveDelay是否已降至零。
Google目前尚未对此进行记录,但可以通过查看上传时的网络流量进行验证,例如内存模型:
var saving = false;
var ev = gapi.drive.realtime.EventType.DOCUMENT_SAVE_STATE_CHANGED;
document.addEventListener(ev, function(e) {
saving = e.isSaving;
});
document.saveAs(fileId);
var h = window.setInterval(function() {
if (!saving && !document.saveDelay) {
window.clearInterval(h);
console.log("Good to go");
}
}, 1000);