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類似。 環境依賴