SpringBoot整合websocket獲取http會話信息
上一篇文章中介紹過SpringBoot整合websocket技術

本文在此基礎上,介紹下在WebSocketSession會話中如何獲取到http會話信息~
獲取http會話用途
未使用前后端分離開發(fā)方案下,在WebSocketSession中如果能拿到HttpSession會話信息,就可以根據(jù)會話中的屬性值,做相應的業(yè)務邏輯處理,比如權限控制,用戶身份識別,信息過濾等等
SpringBoot版本 2.4.5
使用方式
1.修改registerWebSocketHandlers配置,增加HttpSessionHandshakeInterceptor攔截器,用于實現(xiàn)同步HttpSession會話中的屬性信息

2.修改WebSocketHandler消息處理器,嘗試打印WebSocketSession中的會話信息,來觀察http會話信息是否已經同步過來~

3.添加設置http會話信息的Controller層映射方法

4.編寫前端測試代碼來設置HttpSession會話信息,以及連接websocket服務
完整代碼參考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/resources/public/websocket.html
運行效果
啟動SpringBoot工程,訪問http://localhost:17000/websocket.html
點擊set_session按鈕來設置屬性值aaa/bbb


設置HttpSession會話屬性完成后,現(xiàn)在我們再點擊connect按鈕,來發(fā)起websocket會話,并觀察控制臺日志輸出~

觀察結果,可以看到WebSocketSession中已經拿到了HttpSession中的會話信息了
至此,完成了在WebSocketSession中獲取HttpSession會話信息的能力整合~

完整測試工程參考:https://github.com/netbuffer/spring-boot-websocket-demo