关闭浏览器时是否需要显式关闭数据库,尤其是在使用可同步时?

Do you need to explicitly close your db when closing the browser especially when using syncable?

我正在使用 Dexie.Syncable with the examples WebSocketSyncServer.js and WebSocketSyncProtocol.js from the docs 页面设置作为服务器和客户端,但是如果我刷新页面,我会在服务器上获得 "ECONNRESET"。

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

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

即使您不使用 db.syncable 为什么您不想在用户 closes/refreshes 浏览器时关闭数据库?

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

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

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