質問

これは可能ですか? http.sysが使用して特定のリクエストの応答を提供するために使用される基礎となるソケットにアクセスできますか?ポート80のHTTPプロトコルで完全な二重通信をサポートできるようにしたい。

現在のリクエストのために確立されたソケットをつかみ、完全なデュプレックス通信のためにそれを保持する方法はありますか?

私の使用法はWebソケットです。 Webソケットの握手は実際には有効なHTTP要求であり、Webサーバーをアップグレードするために再利用したいと思います。クライアントマシンに別のポートが開かれない可能性があるため、ポート80は不可欠です。

どんな代替手段も感謝しています。

役に立ちましたか?

解決

HTTP.SYSを使用すると、基礎となるソケットにアクセスできません。 HTTPリクエストを処理し、フラグメント(フラグメントキャッシュ、メモリ、またはファイルから)から応答を構築できます。使用するソケットを完全に制御する必要がある場合(HTTP要求として開始するには、「Secret-Websocketハンドシェイク」がサポートされていない後、後でWebSocketソケットにアップグレードします。

できることは、フルデュプレックスシステムのようなロケットを使用します。クライアントはHTTP 1.1を使用してリクエストを投稿し、HTTP.SYSサーバーがそれらのリクエストを受信すると、クライアントからクライアントのトリガーデータが利用可能になるか、タイムアウトが発生するまで回答を延期できます。これはWebSocketほど堅牢ではありませんが、合理的にうまく機能し、サーバーの反応時間に1つまたは2つのMSのみを追加します(少なくとも私のテストでは)。誰かがサーバーへのブラウザで複数のページを開いている場合、ブラウザがページに単一のHTTPリクエストを共有できるようにすると、唯一の問題が発生します。これについては、可能な限り最大のポーリングを低くして、大幅に多くのWebトラフィックをもたらしました。

もう1つのオプションは、「http.sys-code」を使用して「ソケットコード」とHTTP要求でWebSocketを実行することでした。これもかなりうまく機能しますが、コードをより複雑にします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top