服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹-創(chuàng)新互聯(lián)

websocket的介紹

專注于為中小企業(yè)提供做網(wǎng)站、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)玉山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

在講解WebSocket前,我們先來看看下面這種場景,在HTTP協(xié)議下,怎么實(shí)現(xiàn)。

需求:

在網(wǎng)站中,要實(shí)現(xiàn)簡單的聊天,這種情況怎么實(shí)現(xiàn)呢?如下圖:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

當(dāng)發(fā)送私信的時(shí)候,如果要求實(shí)時(shí)同步的話,可以先讓消息入庫,等對方登陸之后,查詢顯示即可。如下圖:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

可是現(xiàn)在,需要實(shí)時(shí)消息,怎么辦?

最簡單的一種方式,就是寫個(gè)定時(shí)任務(wù),輪詢查詢?nèi)?。如下圖:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

雖然這樣可以實(shí)現(xiàn),我們可以看到,每隔一定時(shí)間,就會去調(diào)用服務(wù)器接口,查詢一次。這樣很浪費(fèi)系統(tǒng)資源的。我們來看看HTTP協(xié)議:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

如上圖:

客戶端和服務(wù)器建立連接后,發(fā)送請求數(shù)據(jù)給服務(wù)器;

服務(wù)器接收請求后,處理完成并更加請求返回響應(yīng)的呼作為回應(yīng);

客戶端得到數(shù)據(jù)后,與服務(wù)器斷開連接。

這就是HTTP三次握手。是基于TCP/IP的

從上圖中,我們可以看到,http協(xié)議是典型的拉取方式,短鏈接的;是客戶端向服務(wù)器拉取數(shù)據(jù)的。如果,客戶端不發(fā)送請求,那么服務(wù)器的數(shù)據(jù)就不會主動(dòng)給客戶的的。

我們的需求是要實(shí)現(xiàn)即時(shí)聊天的。因?yàn)橐磿r(shí),所以,不能考客戶端拉取數(shù)據(jù),就需要使用服務(wù)器主動(dòng)給客戶端推送數(shù)據(jù)的。就需要客戶端和服務(wù)器實(shí)時(shí)保持著聯(lián)系,也就是長連接。這種情況下,我們應(yīng)該使用哪種技術(shù)來實(shí)現(xiàn)呢?實(shí)現(xiàn)方式有很多種,這里我們就用websocket來實(shí)現(xiàn)。

本文來源:凱哥Java(kaigejava)

我們來看看WebSocket介紹:

WebSocket 是HTML5一種新的協(xié)議。它實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。一開始的握手需要借助

HTTP請求完成。 WebSocket是真正實(shí)現(xiàn)了全雙工通信的服務(wù)器向客戶端推的互聯(lián)網(wǎng)技術(shù)。 它是一種在單個(gè)TCP連

接上進(jìn)行全雙工通訊協(xié)議。Websocket通信協(xié)議與2011年倍IETF定為標(biāo)準(zhǔn)RFC 6455,Websocket API被W3C定為標(biāo)準(zhǔn)。

什么是全雙工?什么是單工?

全雙工(Full Duplex)是通訊傳輸?shù)囊粋€(gè)術(shù)語。通信允許數(shù)據(jù)在兩個(gè)方向上同時(shí)傳輸,它在能力上相當(dāng)

于兩個(gè)單工通信方式的結(jié)合。全雙工指可以同時(shí)(瞬時(shí))進(jìn)行信號的雙向傳輸(A→B且B→A)。指

A→B的同時(shí)B→A,是瞬時(shí)同步的。

單工、半雙工(Half Duplex),所謂半雙工就是指一個(gè)時(shí)間段內(nèi)只有一個(gè)動(dòng)作發(fā)生,舉個(gè)簡單例子,

一條窄窄的馬路,同時(shí)只能有一輛車通過,當(dāng)目前有兩輛車對開,這種情況下就只能一輛先過,等到頭

兒后另一輛再開,這個(gè)例子就形象的說明了半雙工的原理。早期的對講機(jī)、以及早期集線器等設(shè)備都是基于半雙工的產(chǎn)品。隨著技術(shù)的不斷進(jìn)步,半雙工會逐漸退出。

http與websocket的區(qū)別:

http:

通過上面講解,我們知道http協(xié)議是短鏈接,因?yàn)檎埱笾螅紩P(guān)閉連接,下次重新請求數(shù)據(jù),需要再次打開鏈接。原理簡圖圖下:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

websocket:

webSocket協(xié)議是一種長連接,只需要通過一次請求來初始化鏈接,然后所有的請求和響應(yīng)都是通過這個(gè)TCP鏈接

進(jìn)行通訊。簡單原理圖如下:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

各大瀏覽器對websocket支持情況:

服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹

服務(wù)器要求:

服務(wù)器支持情況:Tomcat 7.0.47+以上才支持。

歡迎關(guān)注凱哥:

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。

標(biāo)題名稱:服務(wù)端向客戶端推送消息技術(shù)之websocket的介紹-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://bm7419.com/article10/dihogo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站營銷、服務(wù)器托管、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司