HTTP接続を介してNode.JSクライアントとNode.JSサーバーの間に双方向ストリームを作成したいと思います。しかしrequest
、クライアントがを呼び出すまで、サーバーのイベントは呼び出されないようreq.end()
です。どうすれば双方向通信を確立できますか?個別のリクエストを使用する必要がありますか?
明確化:私の期待は、それが可能であったということでした
- リクエストヘッダーを送信するクライアント、
- 応答ヘッダーを送信するサーバー、および
- サーバーとクライアントは、必要なときにいつでもバイトを送信します。
編集:OK、オプションの概要は次のとおりです。
別のポートのTCPソケット:これは、別のポートを開いてから、以前のHTTPの使用(要求パスとヘッダー、および応答ヘッダー)を変更して、代わりにストリームを使用する場合に適しています。(私はこのオプションを拒否しました。)
HTTPリクエストを分離し、フラッシュが必要になるたびにリクエストを終了します。終了した接続は終了したセッションを表さなくなるため、状態の管理はアプリケーションで行われます。(短期的には、このオプションを使用します。)
Socket.IO(WebSocketの実装+下位互換性):このオプションは非常に魅力的ですが、HTTPレイヤーの前にSocket.IOレイヤーを追加する必要があります。Socket.IOはすべてのHTTPリクエストを通過させますが、WebSocketリクエストは別の方法で処理されます。(長期的には、このオプションを使用しますが、これを許可するにはフロントエンドを変更する必要があります。)
私が理解しているように、Node.JS
http
ライブラリでは、クライアントがリクエスト本文の送信をすでに完了していない(または少なくとも実質的に開始していない)場合を除いて、レスポンスヘッダーを送信できません。これは正当な理由があると思うので、この3番目のオプションは「ライブラリの前にレイヤーを追加する」というタイトルにすることもできます。http