2

リモート メソッドを実行するには、ステートレス サーバーをプログラムする必要があります。クライアントは、JSON パラメーターを指定した REST を使用して、メソッド名とそのパラメーターを渡します。結果を処理した後、セッションは閉じられます。プロトコルとして Indy10、TCP/IP を使用する必要があるため、IdHTTPServer の使用を検討します。

大規模な結果セットは、Indy10 によってチャンク化され、分割してクライアントに送信されます。

私の問題は今です:

サーバー上のメソッドは、結果を生成するのに時間がかかる場合、進捗情報を提供します。これらは短いメッセージです。クライアントに返信するにはどうすればよいですか?

これまでwriteflushサーバーで使用してきましたが、クライアントはリクエストが終了するのを待ってから、進行状況情報を含む完全な結果セットを返しました。クライアントでそのような進行状況情報を表示/処理しながら、同じ要求でさらにデータを受信するために接続を開いたままにするにはどうすればよいですか?

4

1 に答える 1

1

クライアント側では、通常の HTTP クライアント コンポーネントの代わりに、ユニット IdTCPClient でTIdHTTPIndy クラスを使用して、リクエストを送信し、レスポンスを処理できます。TIdTCPClientCustom

このクラスは、サーバー応答の処理を完全に制御します。このクラスを開始点として使用しTIdTelnetて、メッセージ ブローカー メッセージング プロトコル用のクライアントを実装しました。テキスト データとバイナリ データの両方に対して、安定性と信頼性が高いことがわかりました。

受信スレッドでは、着信データを区切り文字まで読み取り、チャンクに解析して (進行状況情報用)、すぐに処理できます。

于 2010-07-30T08:19:22.937 に答える