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