您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)websocket和http的的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
websocket和http的區(qū)別:1、WebSocket是雙向通信協(xié)議,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息,而HTTP是單向的;2、WebSocket是需要瀏覽器和服務(wù)器握手進行建立連接的,而http是瀏覽器發(fā)起向服務(wù)器的連接。
一、WebSocket 是什么?
WebSocket是HTML5規(guī)范提出的一種協(xié)議;目前除了完犢子的IE瀏覽器,其他瀏覽器都基本支持。他是一種協(xié)議,萬變不離其宗,也是基于TCP協(xié)議的;和HTTP協(xié)議是并存的兩種協(xié)議。
WebSocket是HTML5中的協(xié)議。HTML5 Web Sockets規(guī)范定義了Web Sockets API,支持頁面使用Web Socket協(xié)議與遠程主機進行全雙工的通信。它引入了WebSocket接口并且定義了一個全雙工的通信通道,通過一個單一的套接字在Web上進行操作。
HTML5 Web Sockets以最小的開銷高效地提供了Web連接。相較于經(jīng)常需要使用推送實時數(shù)據(jù)到客戶端甚至通過維護兩個HTTP連接來模擬全雙工連接的舊的輪詢或長輪詢(Comet)來說,這就極大的減少了不必要的網(wǎng)絡(luò)流量與延遲。
要使用HTML5 Web Sockets從一個Web客戶端連接到一個遠程端點,你要創(chuàng)建一個新的WebSocket實例并為之提供一個URL來表示你想要連接到的遠程端點。
該規(guī)范定義了ws://以及wss://模式來分別表示W(wǎng)ebSocket和安全WebSocket連接,這就跟http:// 以及https:// 的區(qū)別是差不多的。
一個WebSocket連接是在客戶端與服務(wù)器之間HTTP協(xié)議的初始握手階段將其升級到Web Socket協(xié)議來建立的,其底層仍是TCP/IP連接。
二、WebSocket與Socket的關(guān)系
Socket其實并不是一個協(xié)議,而是為了方便使用TCP或UDP而抽象出來的一層,是位于應(yīng)用層和傳輸控制層之間的一組接口。
“Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口,提供一套調(diào)用TCP/IP協(xié)議的API。
在設(shè)計模式中,Socket其實就是一個門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。”
當兩臺主機通信時,必須通過Socket連接,Socket則利用TCP/IP協(xié)議建立TCP連接。TCP連接則更依靠于底層的IP協(xié)議,IP協(xié)議的連接則依賴于鏈路層等更低層次。
WebSocket就像HTTP一樣,則是一個典型的應(yīng)用層協(xié)議。
總結(jié):
Socket是傳輸控制層接口,WebSocket是應(yīng)用層協(xié)議。
三、WebSocket與HTTP的關(guān)系
關(guān)系圖:
相同點
都是一樣基于TCP的,都是可靠性傳輸協(xié)議。
都是應(yīng)用層協(xié)議。
區(qū)別
WebSocket是雙向通信協(xié)議,模擬Socket協(xié)議,可以雙向發(fā)送或接受信息。HTTP是單向的。
WebSocket是需要瀏覽器和服務(wù)器握手進行建立連接的。而http是瀏覽器發(fā)起向服務(wù)器的連接,服務(wù)器預(yù)先并不知道這個連接。
聯(lián)系
WebSocket在建立握手時,數(shù)據(jù)是通過HTTP傳輸?shù)摹5墙⒅?,在真正傳輸時候是不需要HTTP協(xié)議的。
總結(jié):
在WebSocket中,只需要服務(wù)器和瀏覽器通過HTTP協(xié)議進行一個握手的動作,然后單獨建立一條TCP的通信通道進行數(shù)據(jù)的傳送。
WebSocket連接的過程是:
首先,客戶端發(fā)起http請求,經(jīng)過3次握手后,建立起TCP連接;http請求里存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等;
然后,服務(wù)器收到客戶端的握手請求后,同樣采用HTTP協(xié)議回饋數(shù)據(jù);
最后,客戶端收到連接成功的消息后,開始借助于TCP傳輸信道進行全雙工通信。
感謝各位的閱讀!關(guān)于websocket和http的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。