Websockets-duplex-communication
WebSocket-二重通信
Webソケットの必要性に飛び込む前に、サーバーとクライアント間の*デュプレックス通信*に使用される既存のテクニックを確認する必要があります。 彼らは次のとおりです-
- 投票
- ロングポーリング
- ストリーミング
- ポストバックとAJAX
- HTML5
投票
ポーリングは、伝送に存在するデータに関係なく定期的な要求を実行する方法として定義できます。 定期的なリクエストは同期的に送信されます。 クライアントは、サーバーに対して指定された時間間隔で定期的な要求を行います。 サーバーの応答には、使用可能なデータまたは警告メッセージが含まれています。
ロングポーリング
名前が示すように、長いポーリングにはポーリングのような同様の手法が含まれます。 クライアントとサーバーは、一部のデータが取得されるかタイムアウトが発生するまで、接続をアクティブに保ちます。 何らかの理由で接続が失われた場合、クライアントは最初からやり直して順次要求を実行できます。
長いポーリングは、ポーリングプロセスよりもパフォーマンスが向上するだけですが、要求が絶えず続くとプロセスが遅くなる場合があります。
ストリーミング
これは、リアルタイムのデータ伝送に最適なオプションと見なされています。 サーバーは、必要なデータがフェッチされるまで、クライアントが接続を開いたままアクティブにします。 この場合、接続は無期限に開いていると言われます。 ストリーミングにはHTTPヘッダーが含まれているため、ファイルサイズが大きくなり、遅延が大きくなります。 これは大きな欠点と考えられます。
AJAX
AJAXは、Javascriptの XmlHttpRequest オブジェクトに基づいています。 これは、非同期JavascriptおよびXMLの短縮形です。 XmlHttpRequest オブジェクトを使用すると、Webページ全体をリロードせずにJavascriptを実行できます。 AJAXはWebページの一部のみを送受信します。
*XmlHttpRequest* オブジェクトを使用したAJAX呼び出しのコードスニペットは次のとおりです-
var xhttp;
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
//code for IE6, IE5
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
- Webソケット*と比較した AJAX の主な欠点は次のとおりです-
- HTTPヘッダーを送信するため、合計サイズが大きくなります。
- 通信は半二重です。
- Webサーバーはより多くのリソースを消費します。
HTML5
HTML5は、Webアプリケーションを開発および設計するための堅牢なフレームワークです。 主な柱には、マークアップ、CSS3 *、 *Javascript APIが含まれます。
次の図は、HTML5コンポーネントを示しています-
以下に示すコードスニペットは、HTML5の宣言とそのdoctypeを説明しています。
<!DOCTYPE html>
Webソケットが必要な理由
インターネットは、相互にリンクして概念的な情報のウェブを形成するハイパーテキストマークアップ言語(HTML)ページの集まりであると考えられていました。 時間が経つにつれて、静的リソースの数が増え、画像などのより豊富なアイテムが増え、Webファブリックの一部になり始めました。
動的サーバーページ-クエリに基づいてコンテンツが生成されたページを許可する高度なサーバーテクノロジー。
すぐに、より動的なWebページを持つという要件により、Dynamic Hypertext Mark-up Language(DHTML)が利用可能になります。 JavaScriptのおかげです。 その後数年間、ページのリロードを回避する試みで*フレーム間通信*が発生し、その後にフレーム内で* HTTPポーリング*が行われました。
ただし、これらのソリューションはいずれも、サーバーとクライアント間のリアルタイムの双方向通信に真に標準化されたクロスブラウザーソリューションを提供していません。
これにより、Web Sockets Protocolが必要になりました。 全二重通信が発生し、すべてのWebブラウザーにデスクトップの豊富な機能がもたらされました。