国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue+springboot+websocket實(shí)現(xiàn)消息通知,含應(yīng)用場景

這篇具有很好參考價(jià)值的文章主要介紹了vue+springboot+websocket實(shí)現(xiàn)消息通知,含應(yīng)用場景。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

vue、springboot

實(shí)現(xiàn)場景

image.png
點(diǎn)擊同步之后更新數(shù)據(jù),更新時(shí)間比較長,因此使用異步,之后該按鈕置灰,在數(shù)據(jù)更新完成之后,服務(wù)端通知客戶端已經(jīng)同步成功,通知提示框,用戶即可查看數(shù)據(jù)
image.png

前端
1、在對(duì)應(yīng)的頁面編寫初始化、連接成功,錯(cuò)誤,接受信息方法
// 初始化方法
init() {

  //1、websocket接口的url
      let ws =
        "http://localhost:21204/ws/platofrmAsync/" +
        this.$store.state.user.userId;

      // 實(shí)例化socket
      this.socket = new WebSocket(ws);
      // 監(jiān)聽socket連接
      this.socket.onopen = this.socketopen;
      // 監(jiān)聽socket錯(cuò)誤信息
      this.socket.onerror = this.error;
      // 監(jiān)聽socket消息
      this.socket.onmessage = this.getMessage;
      // 監(jiān)聽socket斷開連接的消息
      this.socket.close = this.close;
    },

// 連接成功方法
    socketopen() {
      console.log("socket連接成功");
    },
// 連接錯(cuò)誤
    error() {
      console.log("連接錯(cuò)誤");
    },
// 接受信息接口
    getMessage(message) {
      console.log("收到消息");
      //當(dāng)接受到信息之后,就可以做后續(xù)的處理了
      let data = JSON.parse(message.data);
      this.$notify({
        title: "消息通知",
        type: "success",
        message: "平臺(tái)【" + data.platformName + "】已經(jīng)資源樹同步完成",
        position: "bottom-right",
      });
      this.getList();
    },
// 關(guān)閉處理
    close() {
      console.log("連接關(guān)閉");
    },
2、mounted或者created方法中啟動(dòng)初始化方法
  mounted() {
    this.init();
  },
后端
1、配置ServerEndpointExporter
package com.eshore.framework.config.websocket;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

@Configuration
public class WebSocketConfig {
    /**
     * 這個(gè)Bean的作用是自動(dòng)注冊(cè)使用了@ServerEndpoint注解的Bean
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter(){
        return new ServerEndpointExporter();
    }
}

2、編寫ServerEndpoint
package com.eshore.web.websocket;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * author:walker
 * time: 2023/6/28
 * description:  平臺(tái)同步
 */
@Component
@Slf4j
// 類似于controlelr 服務(wù)點(diǎn)
@ServerEndpoint(value = "/ws/platofrmAsync/{userId}")
public class PlatformAsyncWebSocket {

    // 用來存儲(chǔ)每一個(gè)客戶端對(duì)象對(duì)應(yīng)的WsController對(duì)象
    private static Map<String, PlatformAsyncWebSocket> onlineUsers = new ConcurrentHashMap<>();
    // 聲明Session對(duì)象,通過該對(duì)象可以給指定的用戶發(fā)送請(qǐng)求
    private Session session;

    /**
     * 連接建立時(shí)被調(diào)用
     */
    @OnOpen
    public void onOpen(Session session, EndpointConfig config) {
        log.info("連接成功");
        // 將局部的session對(duì)象賦值給成員session對(duì)象
        this.session = session;
        // 這里是因?yàn)榍岸嗽趥鲾?shù)據(jù)的時(shí)候,會(huì)將userId傳過來
        //所以使用將userId和websocket對(duì)象存儲(chǔ)起來,方便下次服務(wù)端推送信息的時(shí)候使用
        Map<String, List<String>> requestParameterMap = this.session.getRequestParameterMap();
        List<String> userIds = requestParameterMap.get("userId");
        String userId = userIds.get(0);
        onlineUsers.put(userId, this);

    }

    /**
     * 接收到客戶端消息時(shí)被調(diào)用
     */
    @OnMessage
    public void onMessage(String message, Session session) {
    	
    }

    /**
     * 連接被關(guān)閉時(shí)調(diào)用
     */
    @OnClose
    public void onClose(Session session) {
        //關(guān)閉時(shí)則將map中的用戶移除
        Map<String, List<String>> requestParameterMap = session.getRequestParameterMap();
        List<String> userIds = requestParameterMap.get("userId");
        String userId = userIds.get(0);
        onlineUsers.remove(userId);
    }


    //推送消息
    //將消息推送給某個(gè)指定的用戶
    public void sendMsg(String userId, String message) {
        try {
            PlatformAsyncWebSocket wsController = onlineUsers.get(userId);
            wsController.session.getBasicRemote().sendText(message);
        } catch (IOException e) {
            log.error("用戶{} 發(fā)送信息{}失敗", userId, message);
            e.printStackTrace();
        }

    }


}

3、編寫測試服務(wù)端推送方法
package com.eshore.web.controller.test;

import com.alibaba.fastjson.JSON;
import com.eshore.biz.domain.BizPlatformInfo;
import com.eshore.web.websocket.PlatformAsyncWebSocket;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class WebsocketTest {

    @Autowired
    private PlatformAsyncWebSocket platformAsyncWebSocket;

    @GetMapping("/send/{userId}")
    public void testWsSend(@PathVariable(value = "userId") String userId){
        BizPlatformInfo bizPlatformInfo = new BizPlatformInfo();
        bizPlatformInfo.setId(1L);
        bizPlatformInfo.setPlatformName("平臺(tái)AA");
        platformAsyncWebSocket.sendMsg(userId, JSON.toJSONString(bizPlatformInfo));
    }

}

測試

1、首先前端進(jìn)入對(duì)應(yīng)的頁面,就會(huì)出現(xiàn)連接成功
image.png

2、調(diào)用測試方法
image.png
之后就可以看到 通知成功的信息了
image.png文章來源地址http://www.zghlxwxcb.cn/news/detail-514977.html

到了這里,關(guān)于vue+springboot+websocket實(shí)現(xiàn)消息通知,含應(yīng)用場景的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java使用websocket實(shí)現(xiàn)消息實(shí)時(shí)通知

    博客僅做學(xué)習(xí)記錄使用。 做項(xiàng)目中遇到這樣一個(gè)實(shí)時(shí)通知需求,因?yàn)榈谝淮谓佑|這個(gè),期間查了很多資料,看了很多博客,最后實(shí)現(xiàn)功能,查詢的博客太多,就不一一放出來了,感謝各位大佬。 websocket方式主要代碼來源于這個(gè)大佬的博客: https://blog.csdn.net/moshowgame/article/d

    2024年02月08日
    瀏覽(31)
  • 【HarmonyOS】消息通知場景的實(shí)現(xiàn)

    【HarmonyOS】消息通知場景的實(shí)現(xiàn)

    ??????????? 從今天開始,博主將開設(shè)一門新的專欄用來講解市面上比較熱門的技術(shù) “鴻蒙開發(fā)”,對(duì)于剛接觸這項(xiàng)技術(shù)的小伙伴在學(xué)習(xí)鴻蒙開發(fā)之前,有必要先了解一下鴻蒙,從你的角度來講,你認(rèn)為什么是鴻蒙呢?它出現(xiàn)的意義又是什么?鴻蒙僅僅是一個(gè)手機(jī)操作系

    2024年01月17日
    瀏覽(22)
  • SSE與WebSocket分別實(shí)現(xiàn)服務(wù)器發(fā)送消息通知(Golang、Gin)

    SSE與WebSocket分別實(shí)現(xiàn)服務(wù)器發(fā)送消息通知(Golang、Gin)

    服務(wù)端推送,也稱為消息推送或通知推送,是一種允許應(yīng)用服務(wù)器主動(dòng)將信息發(fā)送到客戶端的能力,為客戶端提供了實(shí)時(shí)的信息更新和通知,增強(qiáng)了用戶體驗(yàn)。 服務(wù)端推送的背景與需求主要基于以下幾個(gè)訴求: 實(shí)時(shí)通知:在很多情況下,用戶期望實(shí)時(shí)接收到應(yīng)用的通知,如

    2024年02月03日
    瀏覽(28)
  • uniapp通過websocket實(shí)現(xiàn)手機(jī)APP通知欄消息顯示功能(前端部分)

    ?開門見山地說,在移動(dòng)應(yīng)用端,從后端及時(shí)獲取消息,展示到手機(jī)消息通知欄上面來與用戶進(jìn)行交互是一個(gè)很高頻的應(yīng)用場景,這篇文章就來介紹一下,在uniapp開發(fā)中如何實(shí)現(xiàn)這種需求。 ?要實(shí)現(xiàn)這個(gè)需求,對(duì)于前端來說主要技術(shù)需要拆分成兩部分:一是從后端及時(shí)獲取消

    2024年03月18日
    瀏覽(23)
  • uni-app使用plus本地推送通知欄信息,不使用第三方個(gè)推實(shí)現(xiàn)消息在線統(tǒng)一推送、消息通知(MQTT、WebSocket、setInterval定時(shí)器)

    uni-app使用plus本地推送通知欄信息,不使用第三方個(gè)推實(shí)現(xiàn)消息在線統(tǒng)一推送、消息通知(MQTT、WebSocket、setInterval定時(shí)器)

    plus.push.createMessage() 因項(xiàng)目一直是運(yùn)行在內(nèi)網(wǎng),所以不支持使用uni-push等運(yùn)行在公網(wǎng)的第三方個(gè)推渠道。 那就只能使用 plus.push.createMessage() ,示例代碼如下: 參數(shù)解釋: content : ( String 類型) 必選,消息顯示的內(nèi)容,在系統(tǒng)通知中心中顯示的文本內(nèi)容。 payload : ( String 類型 ) 可

    2024年02月15日
    瀏覽(22)
  • 服務(wù)端(后端)主動(dòng)通知前端的實(shí)現(xiàn):WebSocket(springboot中使用WebSocket案例)

    我們都知道 http 協(xié)議只能瀏覽器單方面向服務(wù)器發(fā)起請(qǐng)求獲得響應(yīng),服務(wù)器不能主動(dòng)向?yàn)g覽器推送消息。想要實(shí)現(xiàn)瀏覽器的主動(dòng)推送有兩種主流實(shí)現(xiàn)方式: 輪詢:缺點(diǎn)很多,但是實(shí)現(xiàn)簡單 websocket:在瀏覽器和服務(wù)器之間建立 tcp 連接,實(shí)現(xiàn)全雙工通信 springboot 使用 websocket 有

    2023年04月14日
    瀏覽(36)
  • JAVA 使用WebSocket發(fā)送通知消息

    注: 1、jdk必須要1.8及以上 2、項(xiàng)目若有接口攔截過濾,WebSocket接口必須要配置攔截,使其可以驗(yàn)證通過 WebSocket 業(yè)務(wù)類 發(fā)送消息的方法 前端代碼

    2024年02月11日
    瀏覽(19)
  • SpringBoot整合調(diào)用微信模板方法實(shí)現(xiàn)微信公眾號(hào)消息通知推送,Java實(shí)現(xiàn)微信公眾號(hào)給關(guān)注用戶推送自定義消息通知(手把手從0到1)

    SpringBoot整合調(diào)用微信模板方法實(shí)現(xiàn)微信公眾號(hào)消息通知推送,Java實(shí)現(xiàn)微信公眾號(hào)給關(guān)注用戶推送自定義消息通知(手把手從0到1)

    目錄 概述 公眾號(hào)給關(guān)注用戶推送自定義消息 一、申請(qǐng)公眾號(hào)模板消息 二、獲取安裝“web開發(fā)者工具” 三、微信網(wǎng)頁授權(quán)說明 四、微信網(wǎng)頁授權(quán) - 流程時(shí)序圖 五、HTTPClient 實(shí)現(xiàn)微信公眾號(hào)消息推送與發(fā)布(四步走) 六、通過weixin-java-mp SDK實(shí)現(xiàn)微信公眾號(hào)消息推送與發(fā)布(七

    2024年02月10日
    瀏覽(41)
  • 【通用消息通知服務(wù)】0x3 - 發(fā)送我們第一條消息(Websocket)

    【通用消息通知服務(wù)】0x3 - 發(fā)送我們第一條消息(Websocket)

    項(xiàng)目地址: A generic message notification system[Github] Websocket Connection Pool Websocket Provider websocket接口 結(jié)果截圖

    2024年02月10日
    瀏覽(54)
  • SpringBoot+Netty+Websocket實(shí)現(xiàn)消息推送

    SpringBoot+Netty+Websocket實(shí)現(xiàn)消息推送

    這樣一個(gè)需求:把設(shè)備異常的狀態(tài)每10秒推送到頁面并且以彈窗彈出來,這個(gè)時(shí)候用Websocket最為合適,今天主要是后端代碼展示。 添加依賴 定義netty端口號(hào) netty服務(wù)器 Netty配置 管理全局Channel以及用戶對(duì)應(yīng)的channel(推送消息) 管道配置 自定義CustomChannelHandler 推送消息接口及

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包