一、更改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:雙向數據交流
