1. 程式人生 > >spring boot 整合websocket實現實時推送

spring boot 整合websocket實現實時推送

websocket暫時能想到的應用是瀏覽器聊天和後臺日誌實時顯示到前臺。

當後臺啟動程式後,等待前臺連線,連線上之後,前後臺就可以相互發送資料了。

先貼上pom配置:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId
>
org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>webjars-locator</artifactId> </dependency
>
<dependency> <groupId>org.webjars</groupId> <artifactId>sockjs-client</artifactId> <version>1.0.2</version> </dependency> <dependency> <groupId>org.webjars</groupId>
<artifactId>stomp-websocket</artifactId> <version>2.3.3</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.1.0</version> </dependency>

websocket配置類

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");//配置客戶端訂閱字首
        config.setApplicationDestinationPrefixes("/app");//配置客戶端傳送訊息路徑字首
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        //"/gs-guide-websocket"是前臺連線的端點url
        registry.addEndpoint("/gs-guide-websocket").withSockJS();
    }

}

java伺服器端推送用例

@Component
public class WebSocketTemplate {
    private SimpMessagingTemplate messagingTemplate;

    @Autowired
    public WebSocketTemplate(SimpMessagingTemplate messagingTemplate) {
        this.messagingTemplate = messagingTemplate;
    }
    //向訂閱了 /topic/hello 客戶端websocket例項傳送資料
    public void sendMessage(String message){
        messagingTemplate.convertAndSend("/topic/hello","hello,client");
    }
}

伺服器端接收客戶端傳送的訊息並反饋

@Controller
public class GreetingController {


    @MessageMapping("/hello")
    @SendTo("/topic/hello")
    public String greeting(String message) throws Exception {
        Thread.sleep(1000); // simulated delay
        return "Hello, client! I get your message";
    }

}

客戶端需要的

<script src="/webjars/jquery/jquery.min.js"></script>
<script src="/webjars/sockjs-client/sockjs.min.js"></script>
<script src="/webjars/stomp-websocket/stomp.min.js"></script>
var stompClient = null;
    //連線到伺服器    
    function connect() {
    var socket = new SockJS('/gs-guide-websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        console.log('Connected: ' + frame);
        //接收服務端傳送給/topic/greetings的訂閱訊息
        stompClient.subscribe('/topic/greetings', function (greeting) {
            console.log(greeting);
            JSON.parse(greeting.body);//解析json字串為物件
        });
    });
    //斷開連線
    function disconnect() {
    if (stompClient !== null) {
        stompClient.disconnect();
    }
    //向伺服器傳送訊息
    function sendHello() {
    stompClient.send("/app/hello", {}, "hello server");
}

}
}

存在的問題:
客戶端重新整理後沒有斷開連線的話,伺服器再次傳送資料給客戶端會接收到兩次訊息。
如果有了解的,希望指教一下。

相關推薦

spring boot 整合websocket實現實時

websocket暫時能想到的應用是瀏覽器聊天和後臺日誌實時顯示到前臺。 當後臺啟動程式後,等待前臺連線,連線上之後,前後臺就可以相互發送資料了。 先貼上pom配置: <dependency> <groupId&g

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

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

Spring Boot整合websocket實現群聊,點對點聊天,圖片傳送,音訊傳送

參考:基於https://blog.csdn.net/qq_38455201/article/details/80374712  基礎上進行新增圖片傳送和音訊傳送功能   單點圖片傳送: 單點音訊傳送: 音訊傳送相關js參考:https://github.

WebSocket實現實時資料到前端

@Component @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer{ @Resource goodsWebSocketHandler handler;

Spring boot整合websocket實現分散式websocketsession共享(一)--基於redis的釋出訂閱

本文主要是針對分散式場景下的使用websocket的一個解決方案。我們以下面的圖來說明下業務使用場景。   針對如圖的情況,很多人第一時間想到的是websocket的session共享,這是大多數的第一反應。很遺憾的是,websocketsession是不支援序列化操作

springboot整合websocket實現訊息.

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

ssm中spring websocket 實現伺服器訊息 以及 一對一聊天

上網看了很多方式,最後覺得這種方式比較簡單易懂,這邊主要有三個類(包括註解的配置檔案)就可以實現後臺內容文末會展示結果例項,如果是你所需要的效果,直接拿去用吧~專案中複製直接用本文根據網上整理並修改!!!本文思路來自:連結現在開始。開始前請確保pom已經引入需要的包首先是配置

Spring Boot 整合 Shiro實現許可權控制,親測可用,附帶sql

前提: 本文主要講解Spring Boot 與 Shiro的整合 與許可權控制的實現方式(主要以程式碼實現功能為主),主要用到的技術Spring Boot+Shiro+Jpa(通過Maven構建),並不會涉及到Shiro框架的原始碼分析 如果有想要學習Shiro框架的小夥伴可以去http://shiro.

Spring Boot 整合Mybatis實現主從(多資料來源)分離方案

新建一個Maven專案,最終專案結構如下:多資料來源注入到sqlSessionFactoryPOM增加如下依賴: <!--JSON--> <dependency> <groupId>com.fasterxml.jackson.cor

spring boot 整合mybatis實現分頁功能的例項

1.匯入依賴 在你pom.xml檔案中新增如下整合 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

Java WebSocket程式設計(二):WebSocket實現主動互動

WebSocket協議 WebSocket協議通訊機制 WebSocket協議是獨立的、基於TCP的協議。其本質是先通過HTTP/HTTPS協議進行握手後建立一個用於交換資料的TCP連線,此後伺服器端與客戶器端通過此TCP連線進行實時通訊。 WebSocket開啟握手

WebSocket實現訊息

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

Spring boot整合websocket(一)----傳統註冊方式

修改配置類 @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer{ @Override public void regist

Spring Boot整合Hazelcast實現叢集與分散式記憶體快取

Hazelcast是Hazelcast公司開源的一款分散式記憶體資料庫產品,提供彈性可擴充套件、高效能的分散式記憶體計算。並通過提供諸如Map,Queue,ExecutorService,Lock和JCache等Java的許多開發人員友好的分散式實現。 瞭解Hazelcast Hazelcast特性 簡單易

spring boot 整合 EHcache 實現本地快取

需要的依賴如下,pom檔案新增 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-

Spring Boot整合MyBatis實現多資料來源配置

Spring Boot最大的特點是簡化開發,因此使用Java Config實現去xml配置,本文將使用這種方式完成對SpringBoot+Mybatis的多資料來源配置。同時,會用到阿里巴巴的開源資料來源Druid。依賴:<?xml version="1.0" encoding="UTF-8"?>

Spring Boot 整合 Redis 實現快取操作

package org.spring.springboot.service.impl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spring.springboot.dao.CityDao; impor

Spring Boot 整合 Mybatis 實現 Druid 多資料來源詳解

“清醒時做事,糊塗時跑步,大怒時睡覺,獨處時思考” 本文提綱 一、多資料來源的應用場景 二、執行 springboot-mybatis-mutil-datasource 工程案例 三、springboot-mybatis-mutil-datasource 工程程式碼配置詳解 一、多資料來

Spring Boot整合MongoDB實現增刪改查

MongoDB這兩年來是本人一直使用較多的,之前的使用大多通過封裝的工具類對資料庫進行操作,雖然也算穩定,但有了Spring Boot之前的工具類直接加到SpringBoot裡就沒那麼好使了,因此查閱資料後自己小試牛刀寫了個增刪改查,覺得也還不錯,所以分享給大家看看 1 p

第十篇:Spring Boot整合WebSocket

WebSocket是通過一個Socket來實現雙工非同步通訊的。直接使用WebSocket或者SockJS協議顯得特別繁瑣。使用它的子協議STOMP,它是一個更高級別的協議,STOMP協議使用一個基於幀格式來定義訊息,與HTTP的Request和Response類似。 環境依賴