html 5入門チュートリアル(九)websocket
2472 ワード
なぜwebsocketを使うのですか??
HTTPプロトコルはサーバとクライアント間の接続方式を決定し、直接メッセージプッシュを実現できない(F 5が壊れている)、いくつかの変相の解決方法:
双方向通信とメッセージプッシュ
ポーリング:クライアントは、Ajaxリクエストをサーバに定期的に送信し、サーバはリクエストを受信するとすぐに応答情報を返し、接続を閉じます.利点:バックエンドプログラムの作成が容易です.欠点:リクエストの大半は無駄で、帯域幅とサーバリソースを浪費しています.例:スモールアプリケーションに適しています.長いポーリング:クライアントはサーバーにAjax要求を送って、サーバーは要求を受け取った後にholdは接続を止めて、新しいメッセージがあってやっと応答情報を返して接続を閉じて、クライアントは応答情報を処理した後に更にサーバーに新しい要求を送ります.利点:メッセージがない場合は頻繁に要求されず、費用がかかりません.欠点:サーバhold接続は資源を消費し、データを返す順序が保証されず、管理とメンテナンスが困難である.Conet非同期のashx、例:WebQQ、Hiページ版、Facebook IM.
長い接続:ページに隠しiframeを埋め込み、この隠しiframeのsrc属性を長い接続の要求やxhr要求に設定すると、サーバ側はクライアントにデータを絶えず入力することができます.利点:メッセージがすぐに到着し、無駄な要求を出さない.管理も相対的に便利だ.欠点:サーバが長い接続を維持すると、オーバーヘッドが増加します.例:Gmailチャット
Flash Socket:Socketクラスを使用したFlashプログラムJavaScriptをページに埋め込み、このFlashプログラムが提供するSocketインタフェースを呼び出してサーバ側のSocketインタフェースと通信し、JavaScriptはサーバ側から送信された情報を受信した後にページの表示を制御します.利点:擬似インスタントではなく、本格的なインスタント通信を実現します.欠点:クライアントはFlashプラグインをインストールする必要があります;HTTPプロトコル以外では、自動的にファイアウォールを通り抜けることはできません.例:ネットインタラクティブゲーム.
Websocket
WebSocketは、HTML 5が提供し始めたブラウザとサーバ間のフルデュプレクス通信のネットワーク技術である.この技術により,クライアントとサーバ側の長接続,双方向リアルタイム通信を実現できる.特徴:イベント駆動はwsまたはwssプロトコルを非同期で使用するクライアントsocketが本当の意味でのプッシュ機能の欠点を実現することができる:一部のブラウザはサポートせず、ブラウザのサポートの程度と方式に違いがある.
Websocketでは、JavaScriptを使用してリモート・サーバとの接続を確立し、クライアントとサーバ間の双方向の通信を実現できます.Websocketには2つの方法があります
Websocketは同時にいくつかの傍受関数を定義した. onopenネットワーク接続が確立されたときにイベント がトリガーされる onerrorネットワークにエラーが発生したときにイベント がトリガーされる onclose websocketが閉じるとイベント がトリガーされる. onmessageは、websocketがサーバから送信されたメッセージを受信したときにトリガーされるイベントであり、通信において最も重要なリスニングイベントでもある.msg.data
WebsocketはまたreadyStateプロパティを定義し、このプロパティはwebsocketのステータスを返すことができます. CONNECTING(0)websocketはサーバとの接続を試みている OPEN(1)websocketサーバとの接続が確立された CLOSING(2)websocketはサーバとの接続をオフにしています CLOSED(3)websocketはサーバとの接続をオフにしました Websocketの2つのプロパティ:readyStateとbufferedAmount
readyStateプロパティに基づいてwebSocketの接続状態を判断できます.このプロパティの値は次のようになります.
HTTPプロトコルはサーバとクライアント間の接続方式を決定し、直接メッセージプッシュを実現できない(F 5が壊れている)、いくつかの変相の解決方法:
双方向通信とメッセージプッシュ
ポーリング:クライアントは、Ajaxリクエストをサーバに定期的に送信し、サーバはリクエストを受信するとすぐに応答情報を返し、接続を閉じます.利点:バックエンドプログラムの作成が容易です.欠点:リクエストの大半は無駄で、帯域幅とサーバリソースを浪費しています.例:スモールアプリケーションに適しています.長いポーリング:クライアントはサーバーにAjax要求を送って、サーバーは要求を受け取った後にholdは接続を止めて、新しいメッセージがあってやっと応答情報を返して接続を閉じて、クライアントは応答情報を処理した後に更にサーバーに新しい要求を送ります.利点:メッセージがない場合は頻繁に要求されず、費用がかかりません.欠点:サーバhold接続は資源を消費し、データを返す順序が保証されず、管理とメンテナンスが困難である.Conet非同期のashx、例:WebQQ、Hiページ版、Facebook IM.
長い接続:ページに隠しiframeを埋め込み、この隠しiframeのsrc属性を長い接続の要求やxhr要求に設定すると、サーバ側はクライアントにデータを絶えず入力することができます.利点:メッセージがすぐに到着し、無駄な要求を出さない.管理も相対的に便利だ.欠点:サーバが長い接続を維持すると、オーバーヘッドが増加します.例:Gmailチャット
Flash Socket:Socketクラスを使用したFlashプログラムJavaScriptをページに埋め込み、このFlashプログラムが提供するSocketインタフェースを呼び出してサーバ側のSocketインタフェースと通信し、JavaScriptはサーバ側から送信された情報を受信した後にページの表示を制御します.利点:擬似インスタントではなく、本格的なインスタント通信を実現します.欠点:クライアントはFlashプラグインをインストールする必要があります;HTTPプロトコル以外では、自動的にファイアウォールを通り抜けることはできません.例:ネットインタラクティブゲーム.
Websocket
WebSocketは、HTML 5が提供し始めたブラウザとサーバ間のフルデュプレクス通信のネットワーク技術である.この技術により,クライアントとサーバ側の長接続,双方向リアルタイム通信を実現できる.特徴:イベント駆動はwsまたはwssプロトコルを非同期で使用するクライアントsocketが本当の意味でのプッシュ機能の欠点を実現することができる:一部のブラウザはサポートせず、ブラウザのサポートの程度と方式に違いがある.
Websocketでは、JavaScriptを使用してリモート・サーバとの接続を確立し、クライアントとサーバ間の双方向の通信を実現できます.Websocketには2つの方法があります
send()
close() websocket
Websocketは同時にいくつかの傍受関数を定義した.
WebsocketはまたreadyStateプロパティを定義し、このプロパティはwebsocketのステータスを返すことができます.
readyStateプロパティに基づいてwebSocketの接続状態を判断できます.このプロパティの値は次のようになります.
0 : CONNECTING (numeric value 0),
, 。The connection has not yet been established.
1 : OPEN (numeric value 1),
, 。The WebSocket connection is established and communication is possible.
2 : CLOSING (numeric value 2)
, 。The connection is going through the closing handshake.
3 : CLOSED (numeric value 3)
。The connection has been closed or could not be opened.