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