對于物聯(lián)網(IoT,Internet of Things),最重要的是在互聯(lián)網中設備與設備的通訊,現(xiàn)在物聯(lián)網在internet通信中比較常見的通訊協(xié)議包括:HTTP、websocket、socket、MQTT、XMPP、COAP。
今天我們就來談談websocket和socket之前的區(qū)別。
在互聯(lián)網時代,TCP/IP協(xié)議已經一統(tǒng)江湖,現(xiàn)在的物聯(lián)網的通信架構也是構建在傳統(tǒng)互聯(lián)網基礎架構之上。在當前的互聯(lián)網通信協(xié)議中,HTTP協(xié)議由于開發(fā)成本低,開放程度高,幾乎占據大半江山,所以很多廠商在構建物聯(lián)網系統(tǒng)時也基于http協(xié)議進行開發(fā)。包括google主導的physic web項目,都是期望在傳統(tǒng)web技術基礎上構建物聯(lián)網協(xié)議標準。
websocket是一個可行的辦法。websocket是HTML5提出的基于TCP之上的可支持全雙工通信的協(xié)議標準,其在設計上基本遵循HTTP的思路,對于基于HTTP協(xié)議的物聯(lián)網系統(tǒng)是一個很好的補充。
WebSocket 是為了滿足基于 Web 的日益增長的實時通信需求而產生的。在傳統(tǒng)的 Web 中,要實現(xiàn)實時通信,通用的方式是采用 HTTP 協(xié)議不斷發(fā)送請求。但這種方式即浪費帶寬(HTTP HEAD 是比較大的),又消耗服務器 CPU 占用(沒有信息也要接受請求)。
而Socket 其實并不是一個協(xié)議。它工作在 OSI 模型會話層(第5層),是為了方便大家直接使用更底層協(xié)議(一般是 TCP 或 UDP )而存在的一個抽象層。
最早的一套 Socket API 是 Berkeley sockets ,采用 C 語言實現(xiàn)。它是 Socket 的事實標準,POSIX sockets 是基于它構建的,多種編程語言都遵循這套 API,在 JAVA、Python 中都能看到這套 API 的影子。
Socket是應用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設計模式中,Socket其實就是一個門面模式,它把復雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據,以符合指定的協(xié)議。
而 WebSocket 則不同,它是一個完整的 應用層協(xié)議,包含一套標準的 API 。
所以,從使用上來說,WebSocket 更易用,而 Socket 更靈活。
可以把WebSocket想象成HTTP(應用層),HTTP和Socket什么關系,WebSocket和Socket就是什么關系。
HTTP 協(xié)議有一個缺陷:通信只能由客戶端發(fā)起,做不到服務器主動向客戶端推送信息。
WebSocket 協(xié)議在2008年誕生,2011年成為國際標準。所有瀏覽器都已經支持了。
電話:0951-5988193(8:30-17:30)
24H:139 9501 2209、153 7895 1724
地址:銀川市興慶區(qū)鳳凰南街鳳凰商務樓503室
Copyright @ 昱皓軟件. YUHAO.LTD 寧ICP備16000928號