0

WebSocketAPIを使用して個人プロジェクトを作成しました。

w3cからWebSocketSpecを読んでいるときに、疑問として頭に浮かんだことが1つあります。

WebSocketがハンドシェイクを使用してサーバーに接続するのはなぜですか?

ソケットを使用してサーバーに直接接続することはできませんか?

ありがとう、良い一日を!

4

2 に答える 2

0

あなたの質問はあまり正確ではありませんが、私はあなたがどこに向かっているのか知っていると思います。私が間違っている場合は私を訂正してください。

新しいことは、WebSocket Upgradeヘッダー(「ハンドシェイク」内)を使用することで、ポート80などへの通常のHTTPリクエストを使用して、サーバーへの低遅延双方向接続を呼び出すことができます。その後、全二重接続が確立されます。サーバー経由:80。

ソケットを使用してサーバーに直接接続することはできませんか?

プレーンTCPソケットですか?いつでも試すことができ、任意のポート、任意のプロトコルを試すことができますが、何を達成したいですか?server:80へのHTTP接続がWebSocket接続にアップグレード可能であることがわかっている場合は、プレーンなTCPソケットから始めて、対応するクライアントを自分でコーディングできます。ただし、WebSocketサーバーに接続することはすでにわかっているので、最新のブラウザーが提供するように、確立されたWebSocketクライアントを使用する必要があります。

于 2013-03-07T11:41:43.247 に答える
0

ハンドシェイクにより、WebSocket 接続を通常の HTTP(S) トラフィックと一緒に使用したり、同じポートで使用したりできます。ハンドシェイクのもう 1 つの目的は、CORS (クロスオリジン) セキュリティ ポリシーを適用することです。

通常の TCP サーバーで WebSocket 接続を使用できない原因は、ハンドシェイクだけではありません。WebSocket プロトコルの各データ フレームには、先頭のヘッダー データがあります。これにより、WebSocket を (TCP のような生のストリーミングではなく) メッセージ ベースのプロトコルにすることができ、ダイレクト バイナリ データ サポートのサポートが追加され、マスキング データも含まれます (壊れた仲介から WebSocket 接続を保護するため)。

ブラウザから raw TCP サービスに接続する必要がある場合は、WebSocket から TCP へのブリッジ/プロキシであるwebsockifyを使用できます。免責事項: websockify を作成しました。

于 2013-03-07T13:39:08.093 に答える