物聯網開發之websocket與socket有哪些區別?

對於物聯網(IoT,Internet of Things),最重要的是在互聯網中設備與設備的通訊,現在物聯網在internet通信中比較常見的通訊協議包括:HTTP、websocket、socket、MQTT、XMPP、COAP。

物聯網開發之websocket與socket有哪些區別?

今天我們就來談談websocket和socket之前的區別。


在互聯網時代,TCP/IP協議已經一統江湖,現在的物聯網的通信架構也是構建在傳統互聯網基礎架構之上。在當前的互聯網通信協議中,HTTP協議由於開發成本低,開放程度高,幾乎佔據大半江山,所以很多廠商在構建物聯網系統時也基於http協議進行開發。包括google主導的physic web項目,都是期望在傳統web技術基礎上構建物聯網協議標準。

websocket是一個可行的辦法。websocket是HTML5提出的基於TCP之上的可支持全雙工通信的協議標準,其在設計上基本遵循HTTP的思路,對於基於HTTP協議的物聯網系統是一個很好的補充。

物聯網開發之websocket與socket有哪些區別?

WebSocket 是為了滿足基於 Web 的日益增長的實時通信需求而產生的。在傳統的 Web 中,要實現實時通信,通用的方式是採用 HTTP 協議不斷髮送請求。但這種方式即浪費帶寬(HTTP HEAD 是比較大的),又消耗服務器 CPU 佔用(沒有信息也要接受請求)。


而Socket 其實並不是一個協議。它工作在 OSI 模型會話層(第5層),是為了方便大家直接使用更底層協議(一般是 TCP 或 UDP )而存在的一個抽象層。

最早的一套 Socket API 是 Berkeley sockets ,採用 C 語言實現。它是 Socket 的事實標準,POSIX sockets 是基於它構建的,多種編程語言都遵循這套 API,在 JAVA、Python 中都能看到這套 API 的影子。

物聯網開發之websocket與socket有哪些區別?

Socket是應用層與TCP/IP協議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把複雜的TCP/IP協議族隱藏在Socket接口後面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數據,以符合指定的協議。

物聯網開發之websocket與socket有哪些區別?

而 WebSocket 則不同,它是一個完整的 應用層協議,包含一套標準的 API 。

所以,從使用上來說,WebSocket 更易用,而 Socket 更靈活。

物聯網開發之websocket與socket有哪些區別?

可以把WebSocket想象成HTTP(應用層),HTTP和Socket什麼關係,WebSocket和Socket就是什麼關係。

HTTP 協議有一個缺陷:通信只能由客戶端發起,做不到服務器主動向客戶端推送信息。

WebSocket 協議在2008年誕生,2011年成為國際標準。所有瀏覽器都已經支持了。


分享到:


相關文章: