springboot深入學習(三)-----tomcat配置、websocket


 一、更改servlet服務器

springboot中默認可以集成多種servlet容器,當引入如下依賴時:

springboot默認以tomcat作為項目的servlet容器,如果用戶想要替換tomcat為jetty或者undertow,只需要做以下更改:

 

二、tomcat配置

  目前來說tomcat受眾應該還是更廣,所以本人暫時選用tomcat,相關配置如下:

  a、通用servlet容器配置(也就是針對jetty、undertow都有效的)

  

  b、tomcat特有

  

 

三、websocket

  websocket為瀏覽器以及服務器實現了雙工異步通信的功能,說白了,就是客戶端可以向服務端發送消息,服務端也可以向客戶端發送消息。但是我們直接使用websocket協議開發起來特別繁瑣,一般使用更高級別的協議,stomp,使用一個基於幀的

格式來定義消息,與http的request以及response類似。springboot中使用websocket基於spring-boot-starter-websocket。

  1、廣播式

  服務端有消息,會發送到當前情況所有連接在服務端的客戶端上去。

  完整的項目結構:

  

 

  a、配置websocket

  

  b、瀏覽器發送到服務器端使用的消息類

  

  c、服務端發送到瀏覽器的消息類

  

  d、服務端

  

  e、新建ws.html,放到resources/templates路徑下

f、頁面請求入口

 

   測試運行結果:

  1、瀏覽器中打開多個http://localhost:8080/ws,並打開連接

  

  輸入阿里-馬雲,結果如下:

  

    

  搞定,客戶端可以發送消息到服務端,服務端可以向訂閱了的所有客戶端發送對應的消息。

 

四、總結

  為啥有了http協議,還需要websocket呢,因為http協議只能做到客戶端主動請求服務端,然后獲得相應的數據,但是服務端不能主動推送數據到客戶端。因此之前都是使用輪詢的方式來獲取到相應的數據,這種方式的效率

非常低,因為需要不停的打開與斷開連接。websocket基於tcp協議,並且客戶端可以發送請求到服務端,服務端也可以發送數據到客戶端。具體特點如下:

 

websocket原理圖:

解釋一波英文:

  handshake:握手

  acknowledgement:確認

  bi-directional messages:雙向數據交流

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM