使用Drive Realtime API检测连接

时间:2014-03-29 18:12:09

标签: google-drive-realtime-api

我希望在用户离线时显示消息并禁用所有编辑功能,然后在用户重新联机时重新启用它们。现在我正在使用navigator.onLine,在某些情况下,它实际上并没有很好地检测到连接性。

确定Drive Realtime API是否已连接的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

我们已成功使用实时文档上的“保存状态更改”事件来确定连接的脱机/联机状态。这意味着在您尝试对文档进行更改之前,您不会知道自己处于脱机状态,但如果知道状态至关重要,则可以添加心跳文档更改。

有关活动信息,请参阅https://developers.google.com/drive/realtime/reference/gapi.drive.realtime.DocumentSaveStateChangedEvent

答案 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);