SpringBoot 整合WebSocket 前端 uniapp 訪問的詳細(xì)方法
第一次使用WebSocket,所以最需要一個(gè)及其簡單的例子,跑通之后,增加自己對該技術(shù)的理解。(技術(shù)基礎(chǔ)介紹就免掉了,后面再補(bǔ))
案例邏輯:目前只有一個(gè)用戶,而且是一個(gè)用戶給服務(wù)器發(fā)送數(shù)據(jù),服務(wù)給該用戶返回?cái)?shù)據(jù)

一、SpringBoot 整合 WebSocket
此處的邏輯一共三步
第一步,添加依賴項(xiàng)
第二步,添加配置
第三,寫基礎(chǔ)服務(wù)類
1. 添加websocket依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<!--需要版本的自己加-->
</dependency>2. 添加配置
@Configuration
public class WebSocketConfig {
/**
* ServerEndpointExporter 作用
*
* 這個(gè)Bean會(huì)自動(dòng)注冊使用@ServerEndpoint注解聲明的websocket endpoint
*
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}3. 基礎(chǔ)服務(wù)工具類
@ServerEndpoint(value = "/ws/{userId}")
@Component
@Slf4j
public class WebSocketServer {
private String userId;
/**
* @param session 是webSocket的會(huì)話對象,不是瀏覽器那個(gè)session
* @param userId 用戶Id
* @description 當(dāng)連接建立成功調(diào)用
**/
@OnOpen
public void onOpen(Session session, @PathParam("userId") String userId) {
this.userId = userId;
System.out.println("建立連接");
}
/**
* @param session 會(huì)話對象
* @description 當(dāng)連接關(guān)閉調(diào)用
**/
@OnClose
public void onClose(Session session) throws IOException {
System.out.println("關(guān)閉連接");
}
/**
* @param message 客戶端發(fā)送的消息
* @param session 會(huì)話對象
* @description 當(dāng)客戶端發(fā)送消息時(shí)調(diào)用
**/
@OnMessage
public void onMessage(String message, Session session) throws IOException {
try{
System.out.println(message);
//給客戶端發(fā)送消息
session.getBasicRemote().sendText("服務(wù)端定義的消息");
}catch(Exception e){
e.printStackTrace();
}
}
}二、uniapp 構(gòu)建webSocket與服務(wù)器通信
前端邏輯
第一步:跟服務(wù)器建立連接
第二步:監(jiān)聽WebSocket連接打開事件,并在這個(gè)監(jiān)聽事件中,主動(dòng)給服務(wù)端發(fā)送數(shù)據(jù)
第三步:監(jiān)聽WebSocket接受到服務(wù)器的消息事件(你給服務(wù)器發(fā)送消息時(shí),它也會(huì)及時(shí)給前端返回?cái)?shù)據(jù))
1. 具體代碼
function webSocketFun(Integer userId){
//1. 通過用戶唯一id 與 服務(wù)端webSocket建立連接
uni.connectSocket({
url: `http://192.168.2.18:8080/ws/${userId}`
});
//2. 監(jiān)聽WebSocket連接打開事件,并給服務(wù)端發(fā)送消息
var socketOpen = false;
var socketMsgQueue = ["滕","禹","鑫"];
uni.onSocketOpen(function (res) {
console.log('WebSocket連接已打開');
socketOpen = true;
for (var i = 0; i < socketMsgQueue.length; i++) {
sendSocketMessage(socketMsgQueue[i]);
}
socketMsgQueue = [];
});
function sendSocketMessage(msg) {
if (socketOpen) {
uni.sendSocketMessage({
data: msg
});
} else {
socketMsgQueue.push(msg);
}
}
//3. 監(jiān)聽WebSocket接受到服務(wù)器的消息事件
uni.onSocketMessage(function (res) {
console.log('收到服務(wù)器返回的內(nèi)容為 ======' + res.data);
});
}
到此這篇關(guān)于SpringBoot 整合WebSocket 前端 uniapp 訪問的文章就介紹到這了,更多相關(guān)SpringBoot 整合WebSocket 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot整合Netty+Websocket實(shí)現(xiàn)消息推送的示例代碼
- springboot整合websocket后啟動(dòng)報(bào)錯(cuò)(javax.websocket.server.ServerContainer not available)
- Springboot整合WebSocket實(shí)戰(zhàn)教程
- SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn)代碼
- SpringBoot中HttpSessionListener的簡單使用方式
- 空指針HttpSession異常之SpringBoot集成WebSocket的方法
相關(guān)文章
SpringBoot讀取Resource目錄下文件的四種方式總結(jié)
在Spring?Boot項(xiàng)目中,經(jīng)常需要獲取resources目錄下的文件,這些文件可以包括配置文件、模板文件、靜態(tài)資源等,本文將介紹四種常用的方法來獲取resources目錄下的文件,需要的朋友可以參考下2023-08-08
SpringBoot3整合Hutool-captcha實(shí)現(xiàn)圖形驗(yàn)證碼
在整合技術(shù)框架的時(shí)候,想找一個(gè)圖形驗(yàn)證碼相關(guān)的框架,看到很多驗(yàn)證碼的maven庫不再更新了或中央倉庫下載不下來,還需要多引入依賴,后面看到了Hutool圖形驗(yàn)證碼(Hutool-captcha)中對驗(yàn)證碼的實(shí)現(xiàn),所以本文介紹了SpringBoot3整合Hutool-captcha實(shí)現(xiàn)圖形驗(yàn)證碼2024-11-11
Java并發(fā)應(yīng)用之任務(wù)執(zhí)行分析
這篇文章主要為大家詳細(xì)介紹了JavaJava并發(fā)應(yīng)用編程中任務(wù)執(zhí)行分析的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07
Java實(shí)現(xiàn)經(jīng)典游戲俄羅斯方塊(升級版)的示例代碼
俄羅斯方塊是一款風(fēng)靡全球,從一開始到現(xiàn)在都一直經(jīng)久不衰的電腦、手機(jī)、掌上游戲機(jī)產(chǎn)品,是一款游戲規(guī)則簡單,但又不缺乏樂趣的簡單經(jīng)典小游戲。本文將用Java語言實(shí)現(xiàn)這一經(jīng)典游戲,需要的可以參考一下2022-09-09
Java中this()與super()的用法區(qū)別解析
this()調(diào)用本類構(gòu)造函數(shù)復(fù)用代碼,super()調(diào)用父類構(gòu)造函數(shù)初始化繼承,兩者均需為構(gòu)造函數(shù)首條語句,適用場景分別為代碼復(fù)用和父類初始化,本文給大家介紹Java中this()與super()的用法區(qū)別,感興趣的朋友跟隨小編一起看看吧2025-08-08
Java中的有限狀態(tài)機(jī)(設(shè)計(jì)模式——狀態(tài)模式)
這篇文章主要介紹了Java中的有限狀態(tài)機(jī)(設(shè)計(jì)模式——狀態(tài)模式),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

