Socketio はノードで使用する必要があります。socketio は、nodejs 関数を使用して一部の関数をカプセル化し、nodejs API に依存するため、Socketio はクライアントとサーバーの間でのみ使用できます。最下層でEngineIOを使用した双方向通信データ交換技術。
この記事の動作環境: Windows 10 システム、nodejs バージョン 16、Dell G3 コンピューター。
Socketio は、nodejs 関数を使用していくつかの関数をカプセル化して使用するものと同等です。そのため、nodejs でのみ使用できます。
SocketIO は、下部に EngineIO を使用して、クライアントとサーバー間で確立される双方向通信データ交換テクノロジです。 SocketIO のクライアントは Engine.IO-Client を使用し、サーバーは Engine.IO を使用します。
知識を広げる
SocketIO の仕組み
ブラウザが SocketIO を確立しようとすると、SocketIO はまず xhr-polling を使用してロング ポーリングを作成します。ロング ポーリングが確立されると、WebSocket 接続にアップグレードされます。
SocketIO の最下層は、WebSocket と XMLHttprequest を使用して独自の Socket プロトコル (一時的に EIO Socket と呼ばれます) をカプセル化する EngineIO ライブラリを使用して実装されます。完全な EIO ソケットには、複数の XHR 接続と WebSocket 接続が含まれます。
クライアント
EIO ソケットは XHR (XMLHttprequest) ハンドシェイクを渡します。フロントエンドは XHR を送信して、XHR ロング ポーリングを開始することをサーバーに伝えます。バックエンドによって返されるデータには、オープン フラグ (数値 0 で表される) のほか、sid およびアップグレード フィールド、ping 間隔、ping タイムアウトが含まれます。
0{"sid": "8b7ab1ae-fbcf-4d23-8192-3c14a2a90721"、"アップグレード": ["websocket"]、"pingInterval": 10000、"pingTimeout": 60000}sid は、この EIO ソケットのセッション ID です。1 つの EIO ソケットには複数のリクエストが含まれており、バックエンドは同時に複数の EIO ソケットに接続するため、sid はセッション ID に相当します。
別のフィールドのアップグレード (通常は ['websocket']) は、接続方法をロング ポーリングから WebSocket にアップグレードできることを示します。
フロントエンドは、最初の XHR を送信するときに XHR ロング ポーリングを開始します。この時点でデータの送受信が必要な場合は、ロング ポーリングによって実装されます。いわゆるロング ポーリングとは、フロント エンドがリクエストを送信し、サーバーが応答する前に返されるデータがあるまで待機することを意味します。フロント エンドは、応答を受信した後、すぐに次のリクエストを送信します。これにより双方向通信が可能になります。
フロントエンドがハンドシェイク アップグレードを受信した後、EIO はブラウザが WebSocket をサポートしているかどうかを検出し、サポートしている場合は WebSocket 接続を開始し、プローブの内容と ping の種類を含むデータをこれを通じてサーバーに送信します。ウェブソケット。この時点でサーバーがプローブの内容とポンの種類を含むデータを返すと、フロントエンドは以前に確立された HTTP ロング ポーリングを停止し、データの送受信に WebSocket チャネルのみを使用します。
EIO ソケットのライフサイクル中、ネットワークが正常かどうかをテストするために時々ピンポンが行われます。
これは WebSocket フレームの構造で、緑が送信、白が受信です。前の数字はデータ パケット タイプ、2 は ping、3 は pong、42 はメッセージです
推奨される学習: 「nodejs ビデオ チュートリアル」
以上が、node で Socketio を使用する必要があるかどうかの詳細です。詳細については、このサイトの他の関連記事に注目してください。