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つの方法があります
send()           
close()    websocket  

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の接続状態を判断できます.このプロパティの値は次のようになります.
    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.