首頁歷史 > 正文

Spring Boot WebSocket:群聊-暱稱

2022-02-02由 霧霾少女啊 發表于 歷史

效果展示:

悟空訊息:

Spring Boot WebSocket:群聊-暱稱

Java

師傅訊息:

Spring Boot WebSocket:群聊-暱稱

Java

八戒訊息:

Spring Boot WebSocket:群聊-暱稱

Java

(1)在連線的時候,讓使用者輸入暱稱

這個簡單,只需要提供一個input讓使用者進行輸入即可:

Spring Boot WebSocket:群聊-暱稱

Java

(2)連線前的校驗

在使用者點選連線判斷使用者是否輸入暱稱了:

Spring Boot WebSocket:群聊-暱稱

Java

以上這些都是簡單了,那問題的關鍵就是如何把暱稱顯示在聊天資訊中呢?這裡提供幾種思路,大家可以自己開拓方法。

(3)暱稱顯示方式1:訊息攜帶

這種方式就是在傳送訊息的時候,直接拼接上使用者的暱稱,這種改動是最小的,也是比較簡單的方式,只需要修改前端網頁程式碼即可:

Spring Boot WebSocket:群聊-暱稱

Java

但是這種方式有一個弊端,就是服務端要知道使用者的暱稱就比較費勁了,所以這種方式就是玩玩而已,實際不這麼玩。

(4)暱稱顯示方式2:連線傳遞

這個就是在建立連線的時候傳遞到服務端連線點。

首先修改客戶端的連線方式:

Spring Boot WebSocket:群聊-暱稱

Java

首先服務端的服務端點發布:

Spring Boot WebSocket:群聊-暱稱

Java

服務端獲取引數:

這個在每個方法中都可以獲取的,使用@PathParam(“nickname”) String nickname,比如在連線的時候:

Spring Boot WebSocket:群聊-暱稱

Java

(5)暱稱顯示方式3:使用httpSession

這種方式實現起來就比較複雜了,這裡只說下大概的一個思路,就是將暱稱儲存到httpSession物件中,使用httpSession。setAttribute(“nickname”,nickname)進行儲存。

問題的關鍵是如何在websocket中獲取到httpSession呢,主要是透過新增一個配置類進行實現:

Spring Boot WebSocket:群聊-暱稱

Java

那麼在WebSocket就可以獲取到HttpSession物件了:

Spring Boot WebSocket:群聊-暱稱

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==

頂部