Socket.io-overview
Socket.IO-概要
Socket.IOは、*リアルタイムWebアプリケーション*用のJavaScriptライブラリです。 Webクライアントとサーバー間のリアルタイムの双方向通信を可能にします。 これには2つの部分があります。ブラウザで実行される*クライアント側ライブラリ*と、node.js用の*サーバー側ライブラリ*です。 両方のコンポーネントには同一のAPIがあります。
リアルタイムアプリケーション
リアルタイムアプリケーション(RTA)とは、ユーザーが即時または最新として認識している期間内に機能するアプリケーションです。
リアルタイムアプリケーションのいくつかの例は次のとおりです-
- インスタントメッセンジャー-Whatsapp、Facebook Messengerなどのチャットアプリ 新しいメッセージを受信するためにアプリ/ウェブサイトを更新する必要はありません。
- プッシュ通知-Facebookの写真に誰かがタグを付けると、すぐに通知を受け取ります。
- コラボレーションアプリケーション-Googleドキュメントなどのアプリ。複数のユーザーが同じドキュメントを同時に更新し、すべてのユーザーのインスタンスに変更を適用できます。
- オンラインゲーム-Counter Strike、Call of Dutyなどのゲームもリアルタイムアプリケーションの例です。
なぜSocket.IOなのか?
LAMP(PHP)のような人気のあるWebアプリケーションスタックでリアルタイムアプリケーションを作成することは、従来非常に困難でした。 サーバーの変更をポーリングし、タイムスタンプを追跡する必要があり、本来よりもかなり遅いです。
ソケットは従来、ほとんどのリアルタイムシステムを設計するソリューションであり、クライアントとサーバー間に双方向通信チャネルを提供していました。 これは、サーバーがクライアントにメッセージをプッシュできることを意味します。 イベントが発生するたびに、サーバーがイベントを取得し、関係する接続クライアントにプッシュするという考え方です。
Socket.IOは非常に人気があり、 Microsoft Office、Yammer、Zendesk、Trello などの多くの組織で使用され、堅牢なリアルタイムシステムを構築しています。 これは、 GitHub で最も強力な* JavaScriptフレームワーク*の1つであり、最も依存度の高いNPM(ノードパッケージマネージャー)モジュールです。 Socket.IOには巨大なコミュニティもあります。つまり、ヘルプを見つけるのは非常に簡単です。
ExpressJS
Expressを使用して、Socket.IOが動作するWebサーバーを構築します。 他のノードサーバー側フレームワーク、またはノードHTTPサーバーさえ使用できます。 ただし、ExpressJSを使用すると、ルートなどを簡単に定義できます。 Expressの詳細を読み、基本的な考え方を理解するには、link:/expressjs/index [ExpressJSチュートリアル]にアクセスしてください。