WebSocketsは間違いなく今の未来です。
ロングポーリングは、AJAXのようにリクエストごとに接続が作成されないようにするための汚い回避策ですが、WebSocketが存在しない場合にロングポーリングが作成されました。WebSocketのおかげで、長いポーリングはもうなくなります。
WebRTCは、ピアツーピア通信を可能にします。
WebSocketを学ぶことをお勧めします。
比較:
ウェブ上のさまざまなコミュニケーション技術の
AJAX-request
→ response
。_ サーバーへの接続を作成し、オプションのデータを含む要求ヘッダーを送信し、サーバーから応答を取得して、接続を閉じます。
すべての主要なブラウザでサポートされています。
ロングポール- request
→→ wait
。response
AJAXのようにサーバーへの接続を作成しますが、しばらくの間(ただし長くはありませんが)キープアライブ接続を開いたままにします。接続中、開いているクライアントはサーバーからデータを受信できます。タイムアウトまたはデータeofが原因で、接続が閉じられた後、クライアントは定期的に再接続する必要があります。サーバー側では、AJAXと同じようにHTTPリクエストのように扱われますが、リクエストに対する回答は、アプリケーションロジックによって定義され、現在または将来的に発生します。
サポートチャート(フル) | ウィキペディア
WebSocket - client
↔ server
。サーバーへのTCP接続を作成し、必要な限り開いたままにします。サーバーまたはクライアントは、接続を簡単に閉じることができます。クライアントは、HTTP互換のハンドシェイクプロセスを実行します。成功した場合、サーバーとクライアントはいつでも双方向でデータを交換できます。アプリケーションが両方の方法で頻繁なデータ交換を必要とする場合は効率的です。WebSocketには、クライアントからサーバーに送信される各メッセージのマスキングを含むデータフレーミングがあるため、データは単純に暗号化されます。
サポートチャート(とても良い) | ウィキペディア
WebRTC - peer
↔ peer
。クライアント間の通信を確立するためのトランスポートであり、トランスポートに依存しないため、UDP、TCP、またはさらに抽象的なレイヤーを使用できます。これは通常、ビデオ/オーディオストリーミングなどの大量のデータ転送に使用されます。この場合、信頼性は二次的であり、応答時間と少なくとも一部のデータ転送を優先して、数フレームまたは品質の向上を犠牲にすることができます。両側(ピア)は、互いに独立してデータをプッシュできます。集中型サーバーから完全に独立して使用できますが、それでもendPointsデータを交換する何らかの方法が必要です。ほとんどの場合、開発者は集中型サーバーを使用してピアを「リンク」します。これは、接続を確立するために不可欠なデータを交換するためにのみ必要であり、その後は集中型サーバーは必要ありません。
サポートチャート(中) | ウィキペディア
サーバー送信イベント- client
← server
。クライアントは、サーバーへの永続的かつ長期的な接続を確立します。サーバーのみがクライアントにデータを送信できます。クライアントがサーバーにデータを送信したい場合は、別のテクノロジー/プロトコルを使用する必要があります。このプロトコルはHTTP互換であり、ほとんどのサーバー側プラットフォームで簡単に実装できます。これは、ロングポーリングの代わりに使用するのに適したプロトコルです。サポートチャート(IEを除く良い) | ウィキペディア
利点:
WebSocketサーバー側の主な利点は、HTTP要求(ハンドシェイク後)ではなく、適切なメッセージベースの通信プロトコルであるということです。これにより、パフォーマンスとアーキテクチャの大きな利点を実現できます。たとえば、node.jsでは、異なるソケット接続で同じメモリを共有できるため、それぞれが共有変数にアクセスできます。したがって、データベースを途中で交換ポイントとして使用する必要はありません(AJAXやPHPなどの言語を使用したロングポーリングなど)。データをRAMに保存したり、ソケット間ですぐに再公開したりすることもできます。
セキュリティに関する考慮事項
人々はしばしばWebSocketのセキュリティについて心配しています。現実には、それはほとんど違いをもたらさないか、WebSocketをより良いオプションとして置くことさえあります。まず、AJAXを使用すると、各リクエストがインターネットインフラストラクチャを通過する新しいTCP接続であるため、MITMの可能性が高くなります。WebSocketを使用すると、接続すると、その間のインターセプトがはるかに困難になります。データがクライアントからサーバーにストリーミングされるときにフレームマスキングが追加され、データをプローブするためにより多くの労力が必要になる追加の圧縮が行われます。最新のプロトコルはすべて、HTTPとHTTPS(暗号化)の両方をサポートしています。
PS
WebSocketは一般に、ネットワークのロジックのアプローチが非常に異なることを忘れないでください。これは、httpのようではなく、リアルタイムゲームのようです。