【问题标题】:Do you need to explicitly close your db when closing the browser especially when using syncable?关闭浏览器时是否需要显式关闭数据库,尤其是在使用可同步时?
【发布时间】:2017-09-04 22:59:51
【问题描述】:

我将Dexie.Syncabledocs 页面设置中的示例WebSocketSyncServer.js 和WebSocketSyncProtocol.js 一起用作服务器和客户端,但是如果我刷新页面,我会在服务器上获得“ECONNRESET”。

如果我使用db.close(); 明确关闭数据库或使用db.syncable.disconnect(url); 断开连接,我将不再获得“ECONNRESET”。这对我来说是有道理的,但在你的 db.close() 文档中你说你真的不需要考虑调用这个函数。

我应该只使用db.syncable.disconnect(url) 而不用担心 db.close()

即使您不使用 db.syncable,为什么您不想在用户关闭/刷新浏览器时关闭 db?

【问题讨论】:

    标签: dexie


    【解决方案1】:

    当您刷新页面时,浏览器将自行关闭数据库连接。这就是为什么您不需要在页面关闭时明确关闭连接的原因。如果您使用的是临时 Dexie 实例,最好在不再使用时关闭它。

    您的 ECONNRESET 错误可能发生在 websocket 连接上。示例 WebSocketSyncProtocol 将此错误转发给 Dexie.Syncable,将其视为临时网络关闭事件并通知它重新尝试重新连接。当网络暂时下降时,也可能发生此错误。没有问题,因为这会在正常情况下发生,包括页面关闭。尽管 Dexie.Syncable 会安排在几秒钟后尝试重新连接,但实际上这种重新连接不会发生,因为页面正在关闭并重新加载。

    我只是建议默默地忽略这个特定的错误。不知道您是通过未处理的拒绝还是通过 Dexie.Syncable 的 statusChanged 事件收到的,但是这些类型的临时错误可以安全地被用户忽略,因为它们是正常错误。

    【讨论】:

    • 谢谢。在服务器端,我已经处理了错误,但感谢您让我知道这是正常事件。
    猜你喜欢
    • 2014-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 2015-03-19
    • 2011-11-02
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多