一、大話websocket及課程介紹
簡介:
websocket介紹、使用場景分享、學習課程須要什麼基礎
筆記:
websocket介紹:
WebSocket協議是基於TCP的一種新的網絡協議。它實現了瀏覽器與服務器全雙工(full-duplex)通訊——容許服務器主動發送信息給客戶端html
websocket使用場景分享
如彈幕,網頁聊天系統,實時監控,股票行情推送等前端
學習課程須要什麼基礎:
javaweb基礎, html, js, http協議java
二、課程技術選型和瀏覽器兼容講解
簡介:
簡單介紹什麼是springboot、socketjs、stompjs,及解決使用瀏覽器兼容問題
筆記:
知識點:
技術框架基本介紹
springboot:
是什麼:
一、簡化新Spring應用的初始搭建以及開發過程
二、嵌入的Tomcat,無需部署WAR文件
三、簡化Maven配置, 自動配置Spring
學習資料:
一、官網 https://projects.spring.io/spring-boot
二、springboot整合websocket資料: https://spring.io/guides/gs/messaging-stomp-websocket/nginx
socketjs:
是什麼:
一、是一個瀏覽器JavaScript庫,提供了一個相似WebSocket的對象。
二、提供了一個連貫的跨瀏覽器的JavaScriptAPI,在瀏覽器和Web服務器之間建立了一個低延遲,全雙工,跨域的通訊通道
三、在底層SockJS首先嚐試使用本地WebSocket。若是失敗了,它可使用各類瀏覽器特定的傳輸協議,並經過相似WebSocket的抽象方式呈現它們
四、SockJS旨在適用於全部現代瀏覽器和不支持WebSocket協議的環境。
學習資料:
一、git地址:https://github.com/sockjs/sockjs-clientgit
stompjs:
是什麼:
一、STOMP Simple (or Streaming) Text Orientated Messaging Protocol
它定義了可互操做的連線格式,以便任何可用的STOMP客戶端均可以與任何STOMP消息代理進行通訊,以在語言和平臺之間提供簡單而普遍的消息互操做性(概括一句話:是一個簡單的面向文本的消息傳遞協議。)
github
學習資料:
https://stomp-js.github.io/stomp-websocket/codo/class/Client.html#connect-dynamic
web
三、websocket廣播、單播、組播介紹和使用場景說明
簡介:
主要講解websocket的一些概念,如廣播,單播等,他們的基本區別和使用場景
筆記:
單播(Unicast):
點對點,私信私聊
spring
廣播(Broadcast)(全部人):
遊戲公告,發佈訂閱
多播,也叫組播(Multicast)(特意人羣):
多人聊天,發佈訂閱
後端
四、廣播技術應用 簡單websocket遊戲公告系統《一》
簡介:
快速用springboot搭建一個web應用和maven相關依賴的引入api
筆記:
springboot框架搭建和maven依賴
資料地址:https://spring.io/guides/gs/messaging-stomp-websocket/
五、遊戲公告系統裏maven依賴包webjars使用介紹
簡介:介紹什麼是webjars,爲何使用這個maven依賴包,解決咱們的什麼問題
筆記:
一、方便統一管理
二、主要解決前端框架版本不一致,文件混亂等問題
三、把前端資源,打包成jar包,藉助maven工具進行管理
六、廣播技術應用 簡單websocket遊戲公告系統《二》
簡介:
springBoot裏面websocket的配置類講解,接口開發,頁面模板套用
筆記:
頁面訪問路徑:localhost:8080/v1/index.html
七、websocket遊戲公告系統流程詳解
簡介:
公告系統裏面的相關socketjs和stompjs API介紹和流程講解
八、websocket推送兩種推送方法的區別和講解
簡介:
講解websocket推送方式:@SendTo註解和SimpMessagingTemplate的區別
筆記:
一、SendTo 不通用,固定發送給指定的訂閱者
二、SimpMessagingTemplate 靈活,支持多種發送方式
九、Springboot針對websocket 4類的監聽器介紹和使用
簡介:
SpringBoot裏面websocekt監聽器的使用,包含訂閱、取消訂閱,socekt鏈接和斷開鏈接4類監聽器的編寫和使用
筆記:
注意點:
一、須要監聽器類須要實現接口ApplicationListener<T> T表示事件類型,下列幾種都是對應的websocket事件類型
二、在監聽器類上註解 @Component,spring會把改類歸入管理
websocket模塊監聽器類型:
SessionSubscribeEvent 訂閱事件
SessionUnsubscribeEvent 取消訂閱事件
SessionDisconnectEvent 斷開鏈接事件
SessionDisconnectEvent 創建鏈接事件
十、點對點聊天和簡單消息頭介紹
簡介:
使用socketjs訂閱API,進行點對點聊天;StompHeaderAccessor簡單介紹
筆記:
十一、websocket結合springboot定時推送,實時監控JVM系統負載
簡介:
websocket結合springboot的註解Scheduled實現定時推送,使用服務端定時推送注意事項;
開發簡單監控JVM監控功能
筆記:
一、在controller的類方法上標註 @Scheduled(fixedRate = 3000) 表示這個方法會定時執行
fixedRate表示是多少毫秒 3000就3秒
二、須要在springboot啓動類上@EnableScheduling
三、被註解@Scheduled標記的方法,是不能有參數,否則會報錯
十二、項目應用之股票行情推送實戰《一》 效果展現,阿里雲API介紹和httpClient工具類使用
簡介:
展現簡單股票行情推送的效果,及介紹阿里雲API市場,httpClient工具類的使用
筆記:
訪問地址:localhost:8080/v5/index.html
阿里雲API市場: https://market.aliyun.com/data?spm=5176.8142029.388261.183.346bc16fAs3slP
HttpClientUtils下載: https://github.com/aliyun/api-gateway-demo-sign-java
1三、項目應用之股票行情推送實戰《二》
簡介:相關接口開發,頁面展現對接
筆記:
推送接口開發和頁面展現
糾錯: 只進行推送的controller不用加
「@MessageMapping」註解,@MessageMapping是用於客戶端發送數據到服務端的路由配置
1四、websocket結合spring相關攔截器使用 攔截器介紹,及HandshakeInterceptor握手攔截器介紹
簡介:
攔截器介紹,springBoot結合websocket相關攔截器使用,握手攔截器的開發和使用
筆記:
一、編寫一個類,實現一個接口HandshakeInterceptor;寫完以後須要在websocket配置裏面啓用
.addInterceptors(new HttpHandShakeIntecepter())
二、實現兩個方法beforeHandshake和afterHandshake,在裏面能夠獲取resuest和response
1五、綜合項目實戰多人聊天系統
簡介:
結合前面的課程知識點,開發個綜合項目實戰,包含的功能模塊:用戶登陸,實時在線用戶推送,羣聊等
1六、用戶在線狀態維護功能介紹和登陸API開發
簡介:
用戶狀態功能相關接口開發和登陸API接口開發
1七、spring channel攔截器介紹及用戶上線下線功能開發
簡介:
channel頻道攔截器使用講解,結合StompHeaderAccessor實現用戶上線下線功能
筆記:
一、ChannelInterceptorAdapter 頻道攔截器適配器,具體實現的接口是ChannelIntecepter
二、須要ChannelInterceptorAdapter子類重寫override對應的方法,實現本身的邏輯,主要是
public void postSend(Message<?> message, MessageChannel channel, boolean sent)
三、ChannelInterceptorAdapter子類須要在配置Websocket的配置裏面加入
四、在配置類裏面加入
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.interceptors( new SocketChannelIntecepter());
}
@Override
public void configureClientOutboundChannel(ChannelRegistration registration) {
registration.interceptors( new SocketChannelIntecepter());
}
資料:
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/support/ChannelInterceptorAdapter.html
1八、實時推送在線用戶功能開發
簡介:使用schdule註解,推送在線用戶接口開發
1九、多人羣聊功能開發
簡介:羣聊topic訂閱,頁面調試功能開發
20、nginx反向代理websocket配置
簡介:
nginx配置websocket協議和多節點集羣,相關問題和解決方案
筆記:
一、爲何用nginx,支持高併發,解決多節點部署,充當負載均衡使用
二、用 ip_hash 進行分發到固定後端服務器
三、nginx配置文件裏面須要增長下面的配置還有對應的map映射
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
2一、課程總結和答疑 知乎上相關參考知識:https://www.zhihu.com/question/20215561