SpringBoot2.x系列教程(四十四)WebSocket基礎知識簡介

WebSocket簡介

WebSocket協議是由HTML5定義的,基於TCP協議實現的一種網絡協議,它實現了客戶端與服務器全雙工通信。也就是說通過該協議服務器可以主動發送信息給客戶端。

何謂全雙工

信息只能單向傳送爲單工;信息能雙向傳送但不能同時雙向傳送稱爲半雙工,信息能夠同時雙向傳送則稱爲全雙工。

基本實現原理

WebSocket協議基於TCP協議實現,客戶端和服務器只需要做一個握手的動作之後,形成了一條基於客戶端和服務器之間的快速通道。後續兩者之間便可以進行多次數據幀雙向傳輸過程。

這樣實現的目的是客戶端和服務器進行頻繁雙向通信時,可以使服務器避免打開多個HTTP連接進行工作來節約資源,提高工作效率和資源利用率。

傳統Web推送實現

在沒有WebSocket協議之前,服務器如何向瀏覽器端推送消息?

此時,通常的實現方式是在頁面通過Ajax定時輪詢,比如每隔1秒中向服務器發送一次HTTP請求,詢問服務器是否有新消息,服務器返回結果。

這種形式缺點很明顯,也就是說瀏覽器需要不斷的向服務器發出HTTP請求,而HTTP請求包含較長的頭部,有效信息相對較少,這樣會造成很大的浪費。

再試想一下,如果同時打開很多瀏覽器頁面,同時每個請求都會出現阻塞請求,會對服務器造成一定的併發量和資源浪費。

因此,HTML5定義的WebSocket協議,能更好的節省服務器資源和帶寬,並且能夠更實時地進行通訊。

WebSocket協議本質上是一個基於TCP的協議,因此與HTTP協議沒有什麼關係。

WebSocket的特點

基於上面所述WebSocket的機制,它擁有以下特點:

  • 首先最大的特點就是:開通了雙工異步通信的功能,客戶端和服務器可以雙向平等對話。
  • 建立在TCP協議之上,服務器端的實現比較容易。
  • 與HTTP協議有着良好的兼容性。默認端口也是80和443,並且握手階段採用HTTP協議,因此握手時不容易屏蔽,能通過各種HTTP代理服務器。
  • 數據格式比較輕量,性能開銷小,通信高效。
  • 更好的二進制支持,可以發送文本,也可以發送二進制數據。
  • 更強的時效性。

Spring Boot支持

在Spring Boot 2.x中專門添加了針對WebSocket的功能的start,可以快速集成。同時基於註解形式,可以快速實現WebSocket服務器端的功能。

小結

本篇文章我們瞭解了WebSocket相關的概念、原理、誕生條件以及特點。在瞭解完以上基礎知識之後,後面我們將通過兩種形式(基於WebSocket協議和基於STOMP協議)的實例來展示如何在Spring Boot中使用WebSocket。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章