7

ローカル接続の切断を検出しようとしています。Corelabs コンポーネントのイベントと同様に、それを行う手段はありますか?

ありがとう

編集: 申し訳ありませんが、より具体的にしようと思います: 現在、datasnap 2009 を使用してプロトタイプを設計しています。つまり、シン クライアント、ステートレス サーバー アプリ、およびデータベース サーバーがあります。

私ができることは、クライアントとサーバーアプリ間の接続損失(インターネット接続)を検出して処理し、適切に処理することです。つまり、ユーザーに有益なエラーメッセージを表示するか、サーバーのシャットダウンを検出して静かにリダイレクトします別のアプリ サーバー。

ODAC コンポーネントで管理していた 2 層では、TOraSession にこの問題を処理するためのイベントがいくつかあります。

4

2 に答える 2

4

通常、データベースに対してステートメントが発生しない限り、接続が切断されたときに発生するイベントはありません。これは、ある種の is-alive ping が実行されない限り、接続が失われたことを知る方法がないためです。

多くのフレームワークは、サーバーに対して非常に小さなクエリを実行して、接続がまだ有効かどうかを確認します。サーバーから時間を取得している可能性があります。特に接続プーリング環境では。

一部のデータベース イベント (beforeexecute?) で、アプリケーションの接続チェック機能を実装できます。または、10 秒ごとにチェックするタイマーを作成します。

于 2009-02-17T09:35:59.447 に答える
1

定期的にRPCの「Ping」または「Heartbeat」コマンドをサーバーに送信するスレッドをクライアントに生成します。

  • これが失敗した場合、クライアントは接続に何かが起こったことを知っています

  • サーバーが一定期間(たとえば、ハートビート間隔の2倍)クライアントの応答を聞こえなくなった場合、クライアントは切断されたと結論付けることができますが、これにはステートフルサーバーが必要です(設計はステートレスであるため、イベント処理が必要になります)メッセージキューを介して供給される可能性のあるセカンダリシステムで)

于 2011-07-15T12:01:10.590 に答える