ホームページ  >  記事  >  ウェブフロントエンド  >  Node.jsでのsocket.io学習チュートリアルの紹介(1)

Node.jsでのsocket.io学習チュートリアルの紹介(1)

零下一度
零下一度オリジナル
2017-05-03 10:02:401532ブラウズ

socket.io はイベントに基づいたリアルタイムの双方向通信を提供します。そのため、次の記事では、socket.io に関する関連情報を主に紹介し、socket.io を学習するための基礎知識を主に紹介します。一緒に見てみましょう。

はじめに

Web とサーバー間のリアルタイムのデータ送信は非常に重要な要件ですが、最初は AJAX ポーリングによってのみ実現できます。 WebSocket 標準が導入される前は、AJAX ポーリングが唯一の実現可能な方法でした (Flash ブラウザ経由でも可能でしたが、ここでは説明しません)。 AJAX ポーリングの原理は、AJAX を介してサーバー データを定期的に同期するタイマーを設定することです。この方法では遅延が発生し、サーバーに大きな負荷がかかります。 IETF が TCP ソケットに基づいてデータを送受信するためのプロトコルである WebSocket を標準化したのは 2011 年になってからです。現在、主要なブラウザはすべて WebSocket をサポートしています。

socket.io は、データ送信部分を分離して、engine.io を形成しました。Engine.io は、WebSocket と AJAX ポーリングをカプセル化し、一連の API を形成し、詳細な違いや互換性の問題を保護し、クロスプラットフォーム通信を実現します。 /クロスデバイス双方向データ。

socket.io は、engine.io には必要ありません。独自の Engine.io を実装し、server.bind を介して <p><code>server.bind绑定

应用

  • 实时数据分析展示(报表,日志)

  • 即时通讯、聊天,

  • 二进制流(图片,音乐,视频)传输

  • 多人协同编辑

  • 即时消息推送

类似技术

  • AJAX轮询: 基于XMLHttpRequest的AJAX轮询

  • AJAX长轮询: 类似轮询,服务器在客户端请求后不返回响应,直到有数据需要传到客户端,传完数据后客户端再发起新的请求。缺点是要额外传输的HTTP头,保持住请求不响应也需要一些额外工作。

  • HTTP流: 与AJAX长轮询类似,服务端响应会带上HTTP头: Transfer-Encoding: chunked

  • アプリケーション

をバインドすることもできます。コード > 分析と表示 (レポート、ログ)

  • インスタント メッセージング、チャット、

  • バイナリ ストリーム (写真、音楽、ビデオ) 送信

  • 複数人での共同編集

  • インスタント メッセージ プッシュ
    similarial Technologies送信する必要があるデータ クライアント。データが送信された後、クライアントは新しいリクエストを開始します。欠点は、追加の HTTP ヘッダーを送信する必要があり、リクエストが応答しないようにするために追加の作業が必要になることです。

HTTP ストリーム: AJAX ロングポーリングと同様に、サーバー応答は HTTP ヘッダーを返します: Transfer-Encoding: chunked データをクライアントに返した後、クライアントは開始する必要はありません。新しいリクエストの欠点は、各チャンク間のデータの識別と処理が難しいことです。


プラグイン: Flash や Silverlight と同様、プラグインは主流のブラウザーやユーザーによってますます拒否されています


以下では、さまざまな角度から各テクノロジーを分析します


一方向/双方向方法

単一宛先: AJAX ポーリング、AJAX ロング ポーリング、HTTP ストリーミング


双方向: WebSocket、プラグイン

Delay

WebSocket < プラグイン < ing AJAX ロングポーリング🎜🎜1.ストリーム、AJAX ロングポーリング、AJAXポーリング: 基本的にサポートされます🎜🎜🎜 プラグイン: 基本的にサポートされません🎜🎜 1. 開発またはセットアップの容易さ🎜🎜🎜 WebSocket < AJAX ポーリング< AJAX Long Polling、HTTP ストリーム 🎜🎜🎜 🎜socket.io は WebSocket をカプセル化します。WebSocket がサポートされていない場合は、完全な機能と洗練されたデザインを備えた、リアルタイムの双方向通信を開発する唯一の方法です。 🎜

以上がNode.jsでのsocket.io学習チュートリアルの紹介(1)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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