2017-04-10 65 views
0

我正在使用Dexie.Syncable,其中示例WebSocketSyncServer.js和WebSocketSyncProtocol.js从docs页面设置为服务器和客户端,但是如果刷新页面,我正在服务器上获得“ECONNRESET”。您是否需要在关闭浏览器时明确关闭数据库,特别是在使用可syncable时?

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

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

即使你不使用db.syncable你为什么不希望当用户关闭/刷新浏览器关闭分贝?

回答

1

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

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

我只是推荐默默地忽略这个特定的错误。不知道是否将它作为未处理的拒绝或通过Dexie.Syncable的statusChanged事件接收,但这些类型的临时错误可以安全地从用户中忽略,因为它们是正常错误。

+0

谢谢。在服务器端,我已经处理了错误,但感谢让我知道这是一个正常的事件。 – dan

相关问题