1. 程式人生 > >【websocket】springboot使用websocket實現訊息推送

【websocket】springboot使用websocket實現訊息推送

首先我們引用Spring-boot所帶的websocket依賴:

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

然後編寫前端程式碼和後臺處理後臺觸發的事件:

<script>
    var websocket = null;
    if('WebSocket' in window){
        websocket = new WebSocket('ws://localhost:80/websocket');
    }else{
        alert("該瀏覽器不支援WebSocket");
    }

    websocket.onopen = function (event) {
        console.log("建立連線");
    }

    websocket.onclose = function (event) {
        console.log("斷開連線");
    }

    websocket.onmessage = function (event) {
        console.log("收到訊息" + event.data);
        //彈框
        $('#myModal').modal('show');
        //播放音樂
        document.getElementById('notice').play();
    }

    websocket.onerror = function (event) {
        alert("websocket通訊發生錯誤");
    }

    window.onbeforeunload = function (event) {
        websocket.close();
    }
</script>

後臺進行websocket配置:

@Component
public class WebSocketConfig {
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

然後編寫websocket類,接收ws協議的請求:ws://localhost/websocket,並通過對應方法進行連線,同時編寫sendMessage()方法,向前臺傳送訊息,當後臺需要時就呼叫該方法

@Component
@ServerEndpoint("/websocket")
@Slf4j
public class WebSocket {
    private Session session;

    private static CopyOnWriteArraySet<WebSocket> webSockets = new CopyOnWriteArraySet<>();

    @OnOpen
    public void onOpen(Session session) {
        this.session = session;
        webSockets.add(this);
        log.info("【websocket訊息】有新的連線, 總數:{}", webSockets.size());
    }


    @OnClose
    public void onClose() {
        webSockets.remove(this);
        log.info("【websocket訊息】連線斷開, 總數:{}", webSockets.size());
    }

    @OnMessage
    public void onMessage(String message) {
        log.info("【websocket訊息】收到客戶端發來的訊息:{}", message);
    }

    public void sendMessage(String message){
        for (WebSocket webSocket: webSockets) {
            log.info("【websocket訊息】廣播訊息, message={}", message);
            try {
                webSocket.session.getBasicRemote().sendText(message);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

當我們需要提交訂單想向前臺傳送訊息時,我們可以呼叫sendMessage()方法

@Autowired
private WebSocket webSocket;
//傳送websocket訊息
webSocket.sendMessage("您有新的訂單啦!!!");

前臺效果如下:

後臺訊息

相關推薦

workerman 實現訊息

WEB訊息推送框架 web-msg-sender是一款web長連線推送框架,採用PHPSocket.IO開發,基於WebSocket長連線通訊,如果瀏覽器不支援WebSocket則自動轉用comet推送。 通過後臺推送訊息,訊息可以即時推送到客戶端,非輪詢

小程式如何實現訊息之收集

當訂單狀態變更時,小程式如何實現訊息推送來通知到使用者呢。微信開放了一個叫模板訊息的功能。  要實現訊息推送,分三步走 一、前期配置工作 二、前端工作 要實現推送訊息給使用者,就要有推送碼,官方API介紹提交一次表單有一次推送機會,完成一次支付行為有三次推送機

Springboot+websocket+定時器實現訊息

由於最近有個需求,產品即將到期(不同時間段到期)時給後臺使用者按角色推送,功能完成之後在此做個小結 1. 在啟動類中添加註解@EnableScheduling import org.mybatis.spring.annotation.MapperScan; import

websocketspringboot使用websocket實現訊息

首先我們引用Spring-boot所帶的websocket依賴: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s

WebSocket實現訊息

引言 最近專案中需要實現訊息推送需求,首先想到就是用webscket來實現IM,之前瞭解過這個東西,但是很久沒有用了,所以需要來弄個demo熱熱身,這樣在專案中使用的時候,會更靠譜些。先來看一下最後的效果:          一、Socket簡介 Socket又稱"套

使用SpringBoot快速搭建WebSocket實現訊息

本文旨在幫助未掌握此技能的小白掃清障礙,快速搭建websocket訊息推送服務,高手請繞行。謝謝! 首先,筆者的寫作背景也是一名剛剛打通websocket訊息推送服務的小白。在連續幾日的蒐集資料下,最終在沒有找到一個完整的解決方案的情況下。摸索出正確的結果,倍

springboot整合websocket實現訊息.

springboot整合websocket實現訊息推送 1.maven配置 2.書寫後端程式碼 3.書寫前端程式碼 4.測試 1.maven依賴 <dependency> <groupId>org

Netty+WebSocket簡單實現訊息

依賴 <dependencies> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifact

[ Spring Boot ] 整合 Websocket 實現訊息框架的設計筆記

前段時間,專案中用Websocket實現了一套後臺向前端推送的Service層搭建,感興趣的童鞋可以瞭解下^_^Maven pom<dependency> <groupId&g

使用Websocket實現訊息(心跳)

0x00 心跳 本來以為寫完了,結果最近和一個同事在討論心跳的事情,這裡再做一個補充。先說我的結論: WebSocket協議已經設計了心跳,這個功能可以到達檢測連結是否可用 心跳是用來檢測連結是否可用的,不一定支援攜帶資料,可要看具體實現 如果非要心跳中帶

(二)websocket實現訊息之基於spring4.0實現

  1、新建springBoot專案,新增依賴        &n

Android如何實現Android發短信

ted param close ase find array 短信 red phone 第一種:調用系統短信接口直接發送短信;主要代碼如下: /** * 直接調用短信接口發短信 * @param phoneNumber * @

藉助微信第三方實現訊息和提醒

一.前言 近來在負責微信端的專案開發,遇到了一個比較奇特的需求,使用者不想關注本公眾號(可能是怕隱私或者其他等等)但是還想收到推送給的訊息提醒。搜尋良久,最後在同事口中得知微信有專門實現這種功能的公眾號。 二.PushBear 基於微信模板的一對多訊息送達服務 API 就兩個引數  https:/

vue+socket實現訊息

前提:後臺已設定好socket訊息 首先在vue專案中引入socket。在npm下載socket。 npm install vue-socket.io 當然也可以在index.html中直接插入下面這句,但是最好不要這樣做。 <script src='https://cdn.bo

企業微信簡單實現訊息

廢話不多說,上來就堆程式碼.......... 感覺挺簡單,就不過多解釋,應該一看就懂..... import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.uti

酷炫MQTT實現訊息

首先在實現本功能之前我們需要儲備一下預備知識,大家可以看我的前兩篇文章以及官網,瞭解MQTT的基本常識: MQTT入門篇 在步入正題之前先給大家發放個福利,介紹一款MQTT外掛:MQTTLens 。 MQTTLens外掛的使用 1.安裝:

MQTT+ActiveMQ實現訊息(移動端)

這個小程式是我導師給我佈置的一個任務,網上教程不是很多,遇到的一些困難都是自己解決的,所以寫出來分享一下,有什麼問題大家可以留言,盡力幫大家解決。 來到解壓目錄下,進入bin目錄下的win64資料夾(如何是32位機器則進入win32),執行activemq

vs2010 編譯mosquitto win32版本,開啟websockets,實現訊息

廢話少說,開始~ 1. 下載vs2010 我下了個旗艦版的,不過只有30天試用期,無妨,編譯就夠了。 http://www.xpgod.com/soft/6637.html  ps:之前用過vs2008去編譯,然後各種莫名其妙,如果有同學知道為什麼的,請留言。

App中如何實現訊息

轉載地址:https://zhuanlan.zhihu.com/p/19801751 如今的手機每天都會被各種App的訊息推送覆蓋,訊息推送也成了週末去哪兒APP增加自己曝光量的一種重要手段。訊息推送的技術也日漸成熟,各種平臺紛紛出現,搶佔這一業務,本文就從技術角度來吐槽吐

使用個實現訊息到客戶端

由於公司業務需要,也得學習一下個推的使用,在此記錄一下。 2、註冊完之後登入進去,之後你會獲得 appId 、appKey 、masterSecret 快速入門: private static String appId = ""; private static S