Socket.IO
原作者 | Guillermo Rauch |
---|---|
當前版本 | 3.0.3(2020年11月19日[1]) |
源代碼庫 | |
編程語言 | JavaScript |
操作系統 | 跨平台 |
類型 | 事件驅動 網絡 |
許可協議 | MIT許可證[2] |
網站 | socket |
Socket.IO 是一個面向實時 web 應用的 JavaScript 庫。它使得服務器和客戶端之間實時雙向的通信成為可能。他有兩個部分:在瀏覽器中運行的客戶端庫,和一個面向Node.js的服務端庫。兩者有着幾乎一樣的API。像Node.js一樣,它也是事件驅動的.
Socket.IO 主要使用WebSocket協議。但是如果需要的話,Socket.io可以回退到幾種其它方法,例如Adobe Flash Sockets,JSONP拉取,或是傳統的AJAX拉取,[3]並且在同時提供完全相同的接口。儘管它可以被用作WebSocket的包裝庫,它還是提供了許多其它功能,比如廣播至多個套接字,存儲與不同客戶有關的數據,和異步IO操作。
優勢
Socket.IO 會自動選擇合適雙向通信協議,僅僅需要程序員對套接字的概念有所了解。
劣勢
Socket.io並不是一個基本的、獨立的、能夠回退到其它實時協議的WebSocket庫,它實際上是一個依賴於其它實時傳輸協議的自定義實時傳輸協議的實現。該協議的協商部分使得支持標準WebSocket的客戶端不能直接連接到Socket.io服務器,並且支持Socket.io的客戶端也不能與非Socket.io框架的WebSocket或Comet服務器通信。因而,Socket.io要求客戶端與服務器端均須使用該框架。
參考資料
- ^ Release 3.0.3 · socketio/socket.io. GitHub.
- ^ http://github.com/LearnBoost/socket.io/blob/master/LICENSE
- ^ 存档副本. [2014-10-04]. (原始內容存檔於2016-06-07).
- ^ 存档副本. [2014-10-04]. (原始內容存檔於2014-10-06).