中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

服務端向客戶端推送消息技術之websocket的介紹

發布時間:2020-07-18 10:55:30 來源:網絡 閱讀:347 作者:凱哥Java 欄目:編程語言

websocket的介紹

在講解WebSocket前,我們先來看看下面這種場景,在HTTP協議下,怎么實現。

需求:

在網站中,要實現簡單的聊天,這種情況怎么實現呢?如下圖:

服務端向客戶端推送消息技術之websocket的介紹

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

服務端向客戶端推送消息技術之websocket的介紹

可是現在,需要實時消息,怎么辦?

最簡單的一種方式,就是寫個定時任務,輪詢查詢去。如下圖:

服務端向客戶端推送消息技術之websocket的介紹

雖然這樣可以實現,我們可以看到,每隔一定時間,就會去調用服務器接口,查詢一次。這樣很浪費系統資源的。我們來看看HTTP協議:

服務端向客戶端推送消息技術之websocket的介紹

如上圖:

客戶端和服務器建立連接后,發送請求數據給服務器;

服務器接收請求后,處理完成并更加請求返回響應的呼作為回應;

客戶端得到數據后,與服務器斷開連接。

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

從上圖中,我們可以看到,http協議是典型的拉取方式,短鏈接的;是客戶端向服務器拉取數據的。如果,客戶端不發送請求,那么服務器的數據就不會主動給客戶的的。

我們的需求是要實現即時聊天的。因為要即時,所以,不能考客戶端拉取數據,就需要使用服務器主動給客戶端推送數據的。就需要客戶端和服務器實時保持著聯系,也就是長連接。這種情況下,我們應該使用哪種技術來實現呢?實現方式有很多種,這里我們就用websocket來實現。

本文來源:凱哥Java(kaigejava)

我們來看看WebSocket介紹:

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

HTTP請求完成。 WebSocket是真正實現了全雙工通信的服務器向客戶端推的互聯網技術。 它是一種在單個TCP連

接上進行全雙工通訊協議。Websocket通信協議與2011年倍IETF定為標準RFC 6455,Websocket API被W3C定為標準。

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

全雙工(Full Duplex)是通訊傳輸的一個術語。通信允許數據在兩個方向上同時傳輸,它在能力上相當

于兩個單工通信方式的結合。全雙工指可以同時(瞬時)進行信號的雙向傳輸(A→B且B→A)。指

A→B的同時B→A,是瞬時同步的。

單工、半雙工(Half Duplex),所謂半雙工就是指一個時間段內只有一個動作發生,舉個簡單例子,

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

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

http與websocket的區別:

http:

通過上面講解,我們知道http協議是短鏈接,因為請求之后,都會關閉連接,下次重新請求數據,需要再次打開鏈接。原理簡圖圖下:

服務端向客戶端推送消息技術之websocket的介紹

websocket:

webSocket協議是一種長連接,只需要通過一次請求來初始化鏈接,然后所有的請求和響應都是通過這個TCP鏈接

進行通訊。簡單原理圖如下:

服務端向客戶端推送消息技術之websocket的介紹

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

服務端向客戶端推送消息技術之websocket的介紹

服務器要求:

服務器支持情況:Tomcat 7.0.47+以上才支持。

歡迎關注凱哥:


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

自治县| 天全县| 云和县| 双峰县| 铜梁县| 华蓥市| 思茅市| 伊吾县| 通州市| 射阳县| 昭平县| 辽宁省| 健康| 广东省| 静海县| 兴安县| 奉贤区| 铜鼓县| 通许县| 将乐县| 安阳市| 名山县| 达孜县| 临夏县| 阳高县| 大田县| 醴陵市| 桐柏县| 大厂| 甘谷县| 芮城县| 陇南市| 泗水县| 历史| 秦皇岛市| 金塔县| 全椒县| 太仓市| 綦江县| 澜沧| 莱州市|