Socket.IO - 概述

Socket.IO 是一個用於實時 Web 應用程式的 JavaScript 庫。它支援 Web 客戶端和伺服器之間的實時雙向通訊。它有兩部分: 在瀏覽器中執行的客戶端庫,以及 node.js 的伺服器端庫。兩個元件都具有相同的 API。

實時應用程式

實時應用程式(RTA)是一種在使用者感知為即時或當前的時間段內執行的應用程式。

實時應用的一些例子是 -

  • 即時通訊工具 - Whatsapp,Facebook Messenger 等聊天應用程式。你無需重新整理你的應用程式/網站即可接收新郵件。

  • 推送通知 - 當有人在 Facebook 上的圖片中標記你時,你會立即收到通知。

  • 協作應用程式 - 谷歌文件等應用程式,允許多人同時更新相同的文件並將更改應用於所有人的例項。

  • 線上遊戲 - 反恐精英,使命召喚等遊戲也是實時應用程式的一些例子。

為什麼選擇 Socket.IO?

使用流行的 Web 應用程式堆疊(如LAMP(PHP))編寫實時應用程式一直非常困難。它涉及輪詢伺服器以進行更改,跟蹤時間戳,並且它比它應該慢得多。

傳統上,Sockets 是大多數實時系統架構的解決方案,在客戶端和伺服器之間提供雙向通訊通道。這意味著伺服器可以將訊息推送到客戶端。每當事件發生時,伺服器將獲取它並將其推送到相關的連線客戶端。

Socket.IO 非常受歡迎,它被 Microsoft Office,Yammer,Zendesk,Trello 和許多其他組織用於構建強大的實時系統。它最強大的一個 JavaScript 框架GitHub 上,大部分依賴在 NPM(節點包管理器)模組。 Socket.IO 也有一個龐大的社群,這意味著尋求幫助非常容易。

ExpressJS

我們將使用 express 來構建 Socket.IO 使用的 Web 伺服器。可以使用任何其他節點 - 伺服器端框架甚至節點 HTTP 伺服器。但是,ExpressJS 可以輕鬆定義路線和其他內容。要閱讀有關 express 的更多資訊並獲得有關它的基本知識,請訪問 ExpressJS 教程