背景
項目中經(jīng)常會用到消息推送功能,關于推送技術的實現(xiàn),我們通常會聯(lián)想到輪詢、comet長連接技術,雖然這些技術能夠實現(xiàn),但是需要反復連接,對于服務資源消耗過大,隨著技術的發(fā)展,HtML5定義了WebSocket協(xié)議,能更好的節(jié)省服務器資源和帶寬,并且能夠更實時地進行通訊。本文將介紹如何采用websocket實現(xiàn)消息推送。
WebSocket簡介
WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡協(xié)議。它實現(xiàn)了瀏覽器與服務器全雙工(full-duplex)通信——允許服務器主動發(fā)送信息給客戶端。瀏覽器和服務器僅需一次握手,兩者之間就直接可以創(chuàng)建持久性的連接,并進行雙向數(shù)據(jù)傳輸。
協(xié)議原理
Websocket協(xié)議基于Http協(xié)議,針對Http協(xié)議進行了相關的改善,且Websocket協(xié)議也需要建立TCP連接來實現(xiàn)數(shù)據(jù)傳輸,具體實現(xiàn)如下圖:
文章來源:http://www.zghlxwxcb.cn/news/detail-404788.html
說明:文章來源地址http://www.zghlxwxcb.cn/news/detail-404788.html
- 客戶端發(fā)起http請求,經(jīng)過3次握手后,建立起TCP連接;http請求里存放WebSocket支持的版本號等信息,如:Upgrade、Connection、WebSocket-Version等。
- 服務器收到客戶端的握手請求后,同樣采用HTTP協(xié)議回饋數(shù)據(jù)
- 客戶端收到連接成功的消息后,開始借助于TCP傳輸信道進行全雙工通信.
WebSocket與HTTP協(xié)議的區(qū)別
- 相同點:都是一樣基于TCP的,都是可靠性傳輸協(xié)議。都是應用層協(xié)議。
- 不同點:
- WebSocket是雙向通信協(xié)議,可以雙向發(fā)送或接受信息,而HTTP是單向協(xié)議
- WebSocket需要瀏覽器和服務器握手進行建立連接的,而http是瀏覽器發(fā)起向服務器的連接。
WebSocket特點
- 建立在TCP協(xié)議之上,服務器端的實現(xiàn)比較容易。
- 數(shù)據(jù)格式比較輕量,性能開銷小,通信高效。
- 支持多種數(shù)據(jù)格式,可以發(fā)送文本、二進制數(shù)據(jù)。
- 客戶端可以與任意服務器通信,無同源限制。<
到了這里,關于Spring Boot集成WebSocket實現(xiàn)消息推送的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!