websocket とその内部実装についてもっと学ぼうとしています。しかし、まだいくつかのことを理解できません。詳細な説明を求めてグーグルで検索してみましたが、それらのほとんどは大まかな概要を示しているだけです。以下は私の疑問です
1.私が読んだところによると、Web ソケット サーバー (C# / C++ 実装) はデフォルトでポート 80 を使用します。任意のポートを使用できますが、ファイアウォールの問題がないため、ポート 80 を使用することをお勧めします。その場合、Web サーバーと Web ソケット サーバーの両方を同じポート (80) で実行するにはどうすればよいでしょうか。
2. Web ソケット サーバーがポート 81 で実行され、Web サーバーがポート 80 で実行されているとします。
したがって、ブラウザーが最初のハンドシェイク HTTP 要求 (アップグレード: websocket) を発行すると、この要求はポート 81 に送信されます。その場合、このリクエスト (下記参照) は HTTP プロトコルとは何の関係もありません。それでも、HTTP プロトコル ヘッダーを使用します。なんで?
GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com
ほとんどのブラウザーに現在実装されているのと同じ websocket インターフェイスを使用して、HTTP を使用せずに、特定のポートで直接 TCP/IP 接続を発行するのはなぜですか?
3. クライアント/サーバーから送受信されるデータのパケット サイズ制限またはデータ/バッファ制限はありますか? その場合、データをフレーム化して自分で処理する必要がありますか?
4. Websocket サーバーは常に別のサービス/プロセスである必要がありますか? 将来、Web サーバー (IIS、apache) には、そのプロセス空間内で Web ソケット サーバーをホストするためのサポートが含まれますか?