Spring Boot WebSocket:群聊-暱稱
效果展示:
悟空訊息:
Java
師傅訊息:
Java
八戒訊息:
Java
(1)在連線的時候,讓使用者輸入暱稱
這個簡單,只需要提供一個input讓使用者進行輸入即可:
Java
(2)連線前的校驗
在使用者點選連線判斷使用者是否輸入暱稱了:
Java
以上這些都是簡單了,那問題的關鍵就是如何把暱稱顯示在聊天資訊中呢?這裡提供幾種思路,大家可以自己開拓方法。
(3)暱稱顯示方式1:訊息攜帶
這種方式就是在傳送訊息的時候,直接拼接上使用者的暱稱,這種改動是最小的,也是比較簡單的方式,只需要修改前端網頁程式碼即可:
Java
但是這種方式有一個弊端,就是服務端要知道使用者的暱稱就比較費勁了,所以這種方式就是玩玩而已,實際不這麼玩。
(4)暱稱顯示方式2:連線傳遞
這個就是在建立連線的時候傳遞到服務端連線點。
首先修改客戶端的連線方式:
Java
首先服務端的服務端點發布:
Java
服務端獲取引數:
這個在每個方法中都可以獲取的,使用@PathParam(“nickname”) String nickname,比如在連線的時候:
Java
(5)暱稱顯示方式3:使用httpSession
這種方式實現起來就比較複雜了,這裡只說下大概的一個思路,就是將暱稱儲存到httpSession物件中,使用httpSession。setAttribute(“nickname”,nickname)進行儲存。
問題的關鍵是如何在websocket中獲取到httpSession呢,主要是透過新增一個配置類進行實現:
Java
那麼在WebSocket就可以獲取到HttpSession物件了:
Java
這種方式具體可以參考連結的文章,博主並沒有具體的進行實現,只是簡單看了下文章內容,具體地址如下:
http://blog。csdn。net/z719725611/article/details/52400404
http://blog。csdn。net/yayicho/article/details/52330627
方案總結
本篇文章最終使用的是方式2的方式進行實現,對於方式2和方式3都有各自的使用場景,大家可以自己進行斟酌。
Java學習資料獲取(複製下段連線至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==