リアルタイム Web アプリケーションの現在の実装のほとんどは、ポーリングやその他のサーバー側プッシュ テクノロジーを中心に展開されており、最も有名なものは Comet です。 Comet テクノロジーを使用すると、サーバーは非同期でクライアントにデータをアクティブにプッシュできます。
ポーリングを使用する場合、ブラウザーは HTTP リクエストを定期的に送信し、応答をすぐに受け取ります。長いポーリングを使用する場合、ブラウザーはサーバーにリクエストを送信し、サーバーはストリームを使用してシナリオを解決します。ブラウザは完全な HTTP リクエストを送信しますが、サーバーは更新を続けて無期限に開いたままになるオープン応答を送信して保持します。
上記の 3 つの方法では、リアルタイム データを送信するときに HTTP リクエスト ヘッダーとレスポンス ヘッダーが必要になり、大量の追加の不要なヘッダー データが含まれるため、送信遅延が発生します。
1. HTML5 WebSocket の解釈
1. WebSocket ハンドシェイク
WebSocket 通信を確立するために、クライアントとサーバーは最初のハンドシェイク中に HTTP プロトコルを WebSocket プロトコルにアップグレードします。接続が確立されると、WebSocket メッセージを全二重モードでクライアントとサーバー間で送受信できるようになります。
注: ネットワークでは、各メッセージは 0x00 バイトで始まり 0xFF で終わり、中間データは UTF-8 エンコード形式を使用します。
2. WebSocket インターフェース
WebSocket プロトコルの定義に加えて、JavaScript アプリケーションの WebSocket インターフェイスも定義されています。
注: ws:// および wss:// プレフィックスは、それぞれ WebSocket 接続と安全な WebSocket 接続を表します。
2. HTML5 WebSocket API
このセクションでは、HTML5 WebSocket の使用方法について説明します
1. ブラウザがサポートしているかどうかを確認します
window.WebSocket を使用して、ブラウザがサポートしているかどうかを確認します。
2. APIの基本的な使い方
a. WebSocket オブジェクトの作成と WebSocket サーバーへの接続
b. イベント リスナーを追加します
WebSocket は非同期プログラミング モデルに従います。ソケットを開いた後は、サーバーを積極的にポーリングせずにイベントが発生するのを待つだけで済みます。そのため、イベントをリッスンするコールバック関数を追加する必要があります。
WebSocket オブジェクトには、open、close、message の 3 つのイベントがあります。 open イベントは接続が確立されたときにトリガーされ、message イベントはメッセージを受信したときにトリガーされ、close イベントは WebSocket 接続が閉じられたときにトリガーされます。
c. メッセージを送信します
ソケットが開いているとき (つまり、onopen リスナーを呼び出した後、onclose リスナーを呼び出す前)、send メソッドを使用してメッセージを送信できます。
ws.send("Hello World");
3. HTML5 WebSocket アプリケーションの例
このセクションでは、前述の地理位置情報インターフェイスを組み合わせて、Web ページで直接距離を計算するアプリケーションを作成します。
1. HTML ファイルを作成します
<頭>
お使いのブラウザは HTML5 地理位置情報をサポートしていません
お使いのブラウザは HTML5 Web Sockets をサポートしていません