IdHTTP コンポーネントを使用して、単純なクライアント - サーバー - クライアント アプリケーションを構築しようとしています。IdHttp コンポーネントを使用して、client1 から www.example.com にある php ファイルにバイト配列を送信し、この php ファイルに、IdHTTp を使用して client2 が消費する同じデータを送信させる方法は? 多分私はここで間違った道を進んでいます。
1 に答える
client1からサーバーにデータを送信するには、Base64エンコーディングを使用することをお勧めします。このようにして、バイト配列の代わりに通常の文字列を使用できます。IdHTTPを使用した文字列の送信は簡単です。別の方法は、マルチパートフォームデータ(ここではJavaコード)です。
client2でデータを受信する場合:HTTPクライアントは、サーバーにデータがあるかどうかを知りません。非同期受信(サーバープッシュ)は、新しいWebSocketプロトコルの機能であり、HTTPの拡張であるため、クライアント側とサーバー側で特定の拡張機能が必要です。Delphi用のWebSocketプロトコルのオープンソースおよび商用実装があります。
client2が通常のHTTPクライアントである場合、サーバーからデータを継続的にポーリングする以外に選択肢はありません。基本的なユースケースでは、TidHTTPの代わりにTIdTCPClientコンポーネントをお勧めします。これにより、受信データの処理をより細かく制御できます。クライアントjstは、サーバーのポート80でソケット接続を開き、整形式のHTTP要求を送信してから、ループを実行して応答を受信する必要があります。サーバーに新しいデータがあると、PHPスクリプトはデータの送信を開始し(HTTP応答ヘッダーがなくても)、Base64でエンコードされたデータの送信を開始します。