なぜ、どのようなアプリケーションまたはケースでSocket.IOが必要なのか疑問に思っています。
私は既知のオープン ソース プロジェクトsocket.IO-objcの iOS 開発者です。
通常、サーバーと通信するには HTTP または HTTPS が必要です。ソケットは、リアルタイム通信を行うことを目的としています (常にライブ HTTP 接続を維持する必要があります)。
アプリでリアルタイムが必要な場合は、socket.IO のようなライブラリが必要です。これをもう少し詳しく説明しましょう。マルチプレイヤーで、2 人以上のユーザーが同時にプレイできるゲームを開発しているとします。その場合、多くの理由で HTTP または HTTPS 呼び出しを行うことはありません。そのうちの 1 つはパケット サイズが大きいこと、もう 1 つはこれらの呼び出しが非常に遅いことです。このようなシナリオでは、ソケットなどのライブラリを使用して、サーバーとの間でデータを送受信します。ソケットは非常に高速で、必要なデータ パケットのみを送信できます。HTTP プログラミングを使用すると、サーバーとリアルタイムでやり取りするマルチプレイヤー ゲームやアプリを作成することはできません。
別の例を見てみましょう。チャット アプリケーションで作業していると仮定しましょう。ユーザー A が何かを入力しているとき、ユーザー B は A が入力していることを知る必要があります (Facebook メッセンジャーの gtalk に似ています)。その時点で HTTP 呼び出しを使用すると、「B」は遅延のために相手の実際のステータスを見ることができなくなります。したがって、使用できるのはソケットです。これにより、ユーザー A が何かを入力しているときに、ユーザー A が入力していることをサーバーに通知するだけのデータ パケットが 1 つだけ送信され、ユーザー B に配信されます。このプロセスは非常に高速です (ほぼリアルタイム)。 ) また、データ転送も削減されます。
Socket.io は Web ソケットを使用して、すべて Web サーバーに接続しているユーザー間でデータを渡します。Web ソケットを使用すると、関連するユーザーが Web サーバーにサービスを登録している限り、ネゴシエーション プロトコルはなく、接続は開いたままになります。また、指摘されているように、ペイロードは http/https プロトコルよりも大幅に少なくなっています。
Socket.IO は、リアルタイム Web アプリケーション用の JavaScript ライブラリです。これにより、Web クライアントとサーバー間のリアルタイムの双方向通信が可能になります。これには、ブラウザーで実行されるクライアント側ライブラリと、node.js 用のサーバー側ライブラリの 2 つの部分があります。両方のコンポーネントの API はほぼ同じです。