2017-04-10 64 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

相關問題