2009-09-20 14 views

答えて

2

WebソケットプロトコルはTCPベースのプロトコルですが、HTTPにダウングレードするように設計されています。サーバーにWeb Socketsプロトコルにアップグレードするように要求するHTTPハンドシェイクもあります。サーバがそれをサポートしているなら、二重TCP接続が使用されます。そうでなければHTTPに訴え、彗星はそれをハックします。

+0

WebSocketプロトコル仕様を最後に見たとき、自動的にHTTPにダウングレードする方法はありませんでした。それはどこに追加されましたか? – EricLaw

+0

NTPをサポートするWebSocket(?)は、80年代にシャットダウンされたプロトコルです。 – Christian

7

HTTPではないし、プレーンなTCPソケットでもない。これは、通常のソケット接続(AJAX/COMETは非常に高いオーバヘッド)の低オーバーヘッドを得るように設計されていますが、過去数年間に開発されたブラウザのセキュリティ原則の一部を犠牲にすることはありません。

最初のWebSocketsハンドシェイクは、HTTPとよく似ています。これにより、既存のHTTPプロキシとWebサーバーが着信WebSockets接続をサポートし、それらと適切なことを行う(つまり、実際のハンドラに転送する)ことが容易になります。しかし、成功したハンドシェイク(発信元情報の交換と検証を含む)の後、接続は開いたままで、双方向になります。

データの各パケット(サーバーまたはクライアントから送信された場合)は、 '\ x00'(ゼロバイト)で始まり、UTF-8でエンコードされたデータが続き、 '\ xff' )。

現在のドラフト規格はここにある:http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76

ます。また、リファレンスとして有用であることがnoVNCに含まwsproxyを見つけるかもしれません。 wsproxyは、汎用のWebSocketsからTCPへのソケットプロキシです。 noVNCに含まれるwsproxyのCとPythonの両方のバージョンがあります。ように

http://github.com/kanaka/noVNC/tree/master/utils/

22

、それはHTTPリクエストと通常のTCPソケットの両方です。

websocket接続は、TCPを介した通常のHTTP要求を使用して要求されます。いくつかのヘッダーが送信されます。これは、要求されている通常のページではないWebSocketであることをWebサーバーに通知しますが、基本的にHTTP要求です。

応答がサーバーから送信されると、接続がアップグレードされます。つまり、HTTPに使用されていたTCP接続は、より高い呼び出しのためにハイジャックされます。双方向のリアルタイムのデータ転送です。

双方向通信が可能で、効率的に(これは主に彗星に勝つ)であれば、開発者の視野が大幅に広がります。突然、Web技術だけでは不可能だったMMOゲームやリアルタイムコラボレーションなどが可能になりました。サーバーの役割が来るような状況で

+0

質問:httpリクエストをオープンして開いているようなのですか? (彗星の長いポーリングのような...)?それとも何か別のものですか? –

+0

@RoyiNamirはい、まったく同じです。何かを送信したり受信したりするたびに新しい接続を開く必要はありません。 –

+0

ありがとうございます。実際には本当にプッシュをします....そうですか? (そして、リクエストに応答しません...) –

0

:HTML 5では

は、FONEのようなのWebSocket walky-talkyない(2ウェイCOMM。)。 HTTPプロトコルがwebsocketプロトコルにアップグレードされました。 (wss:// from ws://) SERVERはデュプレックスチャネルを開くことができ、したがって、デュプレックス通信に同意する必要があります。 このリンクも行ってください: http://www.html5rocks.com/en/tutorials/websockets/basics/

ありがとうございます。

関連する問題