
私たちを約束するテクノロジーの何がそんなに面白いですか? 私の意見では、 WebSocketは、HTTPプロトコルの開始以来、最も劇的な拡張機能です。 これは簡単なことではなく、HTTPパラダイムの変化です。 最初は、「要求/応答」のモデルに基づいて構築された同期プロトコルは、 完全に非同期で対称になります。 固定ロールを持つクライアントとサーバーはなくなりましたが、データ交換には2つのピアがあります。 それぞれが独自に機能し、必要に応じて別のデータを送信します。 送信された-そして、待って何もしなかった。 2番目の側は、必要に応じて答えます-すぐにではないかもしれませんし、まったくないかもしれません。 このプロトコルは、データ交換の完全な自由を提供します。使用方法はユーザーが決定します。
あなたが開発している場合、ウェブソケットは法廷に来ると信じています:
-交換とチャネルの速度を要求する、集中的なデータ交換を伴うWebアプリケーション。
-標準に準拠したアプリケーション。
-「長期にわたる」Webアプリケーション。
-ページ上に多くの異なる非同期ブロックを持つ複雑なアプリケーション。
-クロスドメインアプリケーション。
そして、それはどのように機能しますか?
とても簡単です! ページがサーバー上のWebソケットを開くことを決定すると、特別なjavascriptオブジェクトを作成します。
* This source code was highlighted with Source Code Highlighter.
- <script>
- ws = new WebSocket("ws://site.com/demo");
- // -:
- // , :
- ws.onopen = function() { alert("Connection opened...") };
- // -
- ws.onclose = function() { alert("Connection closed...") };
- // , , - , - -
- ws.onmessage = function(evt) { $("#msg").append("<p>"+evt.data+"</p>"); };
- </script>
?
HTTP-. TCP 80 GET-:
GET /demo HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: site.com
Origin: http://site.com
, :
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://site.com
WebSocket-Location: ws://site.com/demo
, TCP- . — «» , .
- , - :
0x00, < UTF-8>, 0xFF
— , 0x00, — 0xFF. — , ! , : XML, JSON, .
, , «» - onmessage.
, 95%. AJAX-, . . TCP- — — — .
:
, - UTF-8! , .
?
WebSockets . - :
0x80, < - >, < >
« »? , . : (0) (1), 7 . : - 0x80, «», — , «», , 0 . — «». «» . . 7- .
, - — GIF 43 :
0x80, 0x2B, < >
160 2 :
0x80, 0x81, 0x20, < >
, ?
?
, TCP- — , , -. ( - , 1 TCP- . :) ).
, — , , .
WebSockets Comet — Bayuex, LongPolling, MultiPart . , , , . : «» . «» - «» — .. ( ) 2, , . , , . , - — - -. , — , .
, 2 : AJAX WebSockets. - — , -. , , -, .. . , . : — . - onmessage . - , , . ? LongPolling ( ) .
HTTP - . , , .. «» . , . , , TCP-. , .
-
HTTP . - , , — Bayeux Protocol.
, -. , . — ( ) — — . , .
-
« » AJAX- — - . , . . WebSockets . «---», «-», , . , Origin. websocket-. , .
! - !
?
!
UPDATE: - www.mibbit.com ( ).
PHP- WebSocket phpDaemon, WebSocketServer. , «pong» () «ping» — ExampleWebSocket.
tcpdump , .
? . « » -, . , , (!) . WebKit — Safari. .
, ?
— web-socket-js -. , - . .
, , . - . « AJAX», - WebSockets .
...
, . ...
: WebSockets —