2017-04-10 8 views
0

サーバーとクライアントとしてdocsページ設定のWebSocketSyncServer.jsとWebSocketSyncProtocol.jsの例ではDexie.Syncableを使用していますが、ページを更新するとサーバーで「ECONNRESET」が表示されます。ブラウザを閉じるときに特にsyncableを使用しているときに明示的にデータベースを閉じる必要がありますか?

db.close();を使用してdbを明示的に閉じるか、db.syncable.disconnect(url);を使用して接続を切断すると、「ECONNRESET」が表示されなくなりました。これは私には意味がありますが、db.close()のドキュメントでは、この関数を呼び出すことについて本当に考える必要はないと言います。

私はちょうど(db.close心配db.syncable.disconnect(url)を使用してはいけません)

ユーザーが閉じたときに/リフレッシュブラウザをデシベルを閉じたくないだろうなぜあなたはdb.syncable使用していない場合であっても?

答えて

1

ブラウザは、ページを更新するときにDB接続を自動的に閉じます。そのため、ページがシャットダウンしているときに明示的に接続を閉じる必要はありません。一時的なDexieインスタンスを使用している場合は、もはやそれを使用しないときに終了することが賢明です。

ECONNRESETエラーは、websocket接続で発生する可能性があります。サンプルのWebSocketSyncProtocolは、このエラーをDexie.Syncableに転送し、一時的なネットワークダウンイベントとして扱い、再接続を試みるように通知します。このエラーは、netが一時的にダウンした場合にも発生する可能性があります。これはページシャットダウンを含む通常の状況で発生するため、問題はありません。 Dexie.Syncableは数秒後に再接続を試みますが、この再接続は実際にはページがシャットダウンして再読み込みされるので決して起こりません。

この特定のエラーを静かに無視することをお勧めします。 Dexie.Syncableの未処理の拒否またはstatusChangedイベントを受け取ったかどうかはわかりませんが、これらのタイプの一時エラーは通常のエラーであるためユーザーから無視しても問題ありません。

+0

ありがとうございました。サーバー側ではすでにエラーを処理していますが、これが正常なイベントであることを知らせてくれてありがとう。 – dan

関連する問題