ホームページ >ウェブフロントエンド >フロントエンドQ&A >ノードでsocketioを使用する必要がありますか?

ノードでsocketioを使用する必要がありますか?

WBOY
WBOYオリジナル
2022-07-06 17:19:381500ブラウズ

socketio は、node で使用する必要があります。socketio は、nodejs のライブラリです。これは、nodejs 関数を使用して一部の関数をカプセル化し、一部の nodejs API に依存するため、nodejs でのみ使用できます。Socketio はクライアントにもありますサーバーとサーバー間で確立された双方向通信データ交換技術は、下部にある EngineIO を使用します。

ノードでsocketioを使用する必要がありますか?

この記事の動作環境: Windows 10 システム、nodejs バージョン 16、Dell G3 コンピューター。

socketio は、nodejs で使用する必要があります。

socketio は、nodejs のライブラリです。これは、nodejs 関数を使用して、使用できるいくつかの関数をカプセル化する他のものと同等です。これは、nodejs のいくつかの API に依存します。そのため、nodejs でのみ使用できます。

SocketIO は、クライアントとサーバー間で確立される双方向通信データ交換技術であり、その基礎層には EngineIO が使用されます。 SocketIO のクライアントは Engine.IO-Client を使用し、サーバーは Engine.IO を使用します。

拡張知識

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 はメッセージです。

ノードでsocketioを使用する必要がありますか? 推奨学習: 「

nodejs ビデオ チュートリアル

以上がノードでsocketioを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。