欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot 整合WebSocket 前端 uniapp 訪問的詳細(xì)方法

 更新時(shí)間:2023年09月02日 15:47:40   作者:tengyuxin  
這篇文章主要介紹了SpringBoot 整合WebSocket 前端 uniapp 訪問的詳細(xì)方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

第一次使用WebSocket,所以最需要一個(gè)及其簡單的例子,跑通之后,增加自己對(duì)該技術(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)注冊(cè)使用@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ì)話對(duì)象,不是瀏覽器那個(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ì)話對(duì)象
     * @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ì)話對(duì)象
     * @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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合RestTemplate用法的實(shí)現(xiàn)

    SpringBoot整合RestTemplate用法的實(shí)現(xiàn)

    本篇主要介紹了RestTemplate中的GET,POST,PUT,DELETE、文件上傳和文件下載6大常用的功能,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 關(guān)于MyBatisSystemException異常產(chǎn)生的原因及解決過程

    關(guān)于MyBatisSystemException異常產(chǎn)生的原因及解決過程

    文章講述了在使用MyBatis進(jìn)行數(shù)據(jù)庫操作時(shí)遇到的異常及其解決過程,首先考慮了事務(wù)問題,但未解決,接著懷疑是MyBatis的一級(jí)緩存問題,關(guān)閉緩存后問題依舊存在,最終發(fā)現(xiàn)是SQL映射文件中的參數(shù)傳遞錯(cuò)誤,使用了錯(cuò)誤的標(biāo)簽導(dǎo)致循環(huán)插入
    2025-01-01
  • 使用java實(shí)現(xiàn)日志工具類分享

    使用java實(shí)現(xiàn)日志工具類分享

    這篇文章主要介紹的Java代碼工具類是用于書寫日志信息到指定的文件,并且具有刪除之前日志文件的功能,需要的朋友可以參考下
    2014-03-03
  • mybatis多對(duì)多關(guān)聯(lián)實(shí)戰(zhàn)教程(推薦)

    mybatis多對(duì)多關(guān)聯(lián)實(shí)戰(zhàn)教程(推薦)

    下面小編就為大家?guī)硪黄猰ybatis多對(duì)多關(guān)聯(lián)實(shí)戰(zhàn)教程(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • IDEA中maven依賴報(bào)紅的問題解決辦法

    IDEA中maven依賴報(bào)紅的問題解決辦法

    這篇文章主要給大家介紹了關(guān)于IDEA中maven依賴報(bào)紅的問題解決辦法,在使用IDEA過程中,經(jīng)常會(huì)出現(xiàn)maven依賴報(bào)紅的問題,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • java使用@Scheduled注解執(zhí)行定時(shí)任務(wù)

    java使用@Scheduled注解執(zhí)行定時(shí)任務(wù)

    這篇文章主要給大家介紹了關(guān)于java使用@Scheduled注解執(zhí)行定時(shí)任務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    這篇文章主要介紹了詳解Spring Cloud 斷路器集群監(jiān)控(Turbine),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • java線程中斷?interrupt?和?LockSupport解析

    java線程中斷?interrupt?和?LockSupport解析

    這篇文章主要為大家介紹了java線程中斷?interrupt?和?LockSupport示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Spring Data環(huán)境搭建實(shí)現(xiàn)過程解析

    Spring Data環(huán)境搭建實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Spring Data環(huán)境搭建實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring Boot詳解整合JWT教程

    Spring Boot詳解整合JWT教程

    JWT是目前比較流行的跨域認(rèn)證解決方案,本文主要介紹了SpringBoot整合JWT的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評(píng)論