1

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

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

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

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

4

1 回答 1

2

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

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

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

于 2017-04-10T10:44:14.430 回答