最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot+WebSocket向前端推送消息的實(shí)現(xiàn)示例

 更新時間:2024年08月05日 09:29:25   作者:iQM75  
WebSocket是一種在單個TCP連接上進(jìn)行全雙工通信的協(xié)議,允許服務(wù)器主動向客戶端推送信息,同時也能從客戶端接收信息,本文主要介紹了SpringBoot+WebSocket向前端推送消息的實(shí)現(xiàn)示例,感興趣的可以了解一下

什么是WebSocket

WebSocket是一種在單個TCP連接上進(jìn)行全雙工通信的協(xié)議,允許服務(wù)器主動向客戶端推送信息,同時也能從客戶端接收信息。

WebSocket協(xié)議誕生于2008年,并在2011年成為國際標(biāo)準(zhǔn)。這種協(xié)議解決了傳統(tǒng)HTTP請求中需要不斷輪詢服務(wù)器的問題,通過建立持久化的連接,實(shí)現(xiàn)了高效的雙向數(shù)據(jù)傳輸。具體如下:

  • 基本特點(diǎn):WebSocket建立在TCP協(xié)議之上,提供了一個全雙工通信通道。這意味著服務(wù)器和客戶端可以在一個連接上同時發(fā)送和接收信息,且數(shù)據(jù)交換更加高效。
  • 協(xié)議兼容:雖然WebSocket是一個獨(dú)立的協(xié)議,但它在握手階段使用HTTP協(xié)議,以確保與現(xiàn)有系統(tǒng)的兼容性。其默認(rèn)端口也是80和443,使得它可以通過各種HTTP代理服務(wù)器。
  • 應(yīng)用場景:WebSocket非常適合需要實(shí)時數(shù)據(jù)交互的應(yīng)用,如聊天應(yīng)用、在線游戲、實(shí)時通知等。
  • 數(shù)據(jù)格式:WebSocket支持傳輸文本和二進(jìn)制數(shù)據(jù),并且數(shù)據(jù)格式輕量,開銷小,性能高。
  • API使用:在開發(fā)中,可以使用WebSocket API輕松地創(chuàng)建和管理連接,并通過這些連接發(fā)送和接收數(shù)據(jù)。例如,在JavaScript中,可以這樣創(chuàng)建和處理WebSocket連接:
// 創(chuàng)建WebSocket連接
var socket = new WebSocket('ws://localhost:8080');

// 連接成功觸發(fā)
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});

// 監(jiān)聽消息
socket.addEventListener('message', function (event) {
    console.log('Message from server ', event.data);
});

綜上所述,WebSocket通過提供高效、低開銷的雙向通信協(xié)議,極大地改善了實(shí)時數(shù)據(jù)傳輸?shù)捏w驗,適用于需要頻繁數(shù)據(jù)交互的應(yīng)用場景 。

實(shí)現(xiàn)

1、在你的pom.xml文件中添加以下依賴:

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

2、創(chuàng)建一個配置類,繼承AbstractWebSocketMessageBrokerConfigurer,并重寫configureMessageBrokerregisterStompEndpoints方法。 

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

@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) {
        registry.addEndpoint("/websocket").withSockJS();
    }
}

 3、創(chuàng)建一個類,用于處理客戶端發(fā)送的消息和向客戶端發(fā)送消息。

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Controller;

@Controller
public class WebSocketController {

    @MessageMapping("/send")
    @SendTo("/topic/messages")
    public String handleMessage(String message) {
        return "Received: " + message;
    }
}

4、在前端,你需要使用SockJS和STOMP.js庫來連接WebSocket服務(wù)器并接收消息。首先,確保你已經(jīng)在HTML文件中引入了這兩個庫:

<script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.5.0/sockjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>

5、然后,你可以使用以下JavaScript代碼連接到WebSocket服務(wù)器并接收消息:

// 建立連接
var socket = new SockJS('/websocket');
var stompClient = Stomp.over(socket);

// 連接到服務(wù)器
stompClient.connect({}, function (frame) {
    console.log('Connected: ' + frame);

    // 訂閱消息
    stompClient.subscribe('/topic/messages', function (message) {
        console.log('Received: ' + message.body);
    });
});

// 發(fā)送消息
function sendMessage() {
    var message = document.getElementById('message').value;
    stompClient.send("/app/send", {}, message);
}

 現(xiàn)在,當(dāng)你調(diào)用sendMessage函數(shù)時,它將通過WebSocket向后端發(fā)送消息,后端將處理該消息并將其廣播到所有訂閱了/topic/messages的客戶端。

到此這篇關(guān)于SpringBoot+WebSocket向前端推送消息的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot WebSocket推送消息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • hadoop之MapReduce框架原理

    hadoop之MapReduce框架原理

    這篇文章主要介紹了hadoop的MapReduce框架原理,MapReduce是分為兩個階段的,MapperTask階段,和ReduceTask階段。如果有感興趣的小伙伴可以借鑒參考
    2023-03-03
  • 深入理解Java設(shè)計模式之享元模式

    深入理解Java設(shè)計模式之享元模式

    這篇文章主要介紹了JAVA設(shè)計模式之享元模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2021-11-11
  • springboot如何自定義pom內(nèi)子依賴版本

    springboot如何自定義pom內(nèi)子依賴版本

    這篇文章主要介紹了springboot如何自定義pom內(nèi)子依賴版本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解Java的Spring框架中bean的注入集合

    詳解Java的Spring框架中bean的注入集合

    這篇文章主要介紹了詳解Java的Spring框架中bean的注入集合,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • SpringBoot登錄、退出、獲取用戶信息的session處理方案

    SpringBoot登錄、退出、獲取用戶信息的session處理方案

    這篇文章主要介紹了SpringBoot登錄、退出、獲取用戶信息的session處理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 使用Nexus搭建Maven私服教程的方法步驟

    使用Nexus搭建Maven私服教程的方法步驟

    本文主要介紹了使用Nexus搭建Maven私服教程的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析

    Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析

    這篇文章主要介紹了Spring標(biāo)準(zhǔn)的xml文件頭實(shí)例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • 從Hello?World開始理解GraphQL背后處理及執(zhí)行過程

    從Hello?World開始理解GraphQL背后處理及執(zhí)行過程

    這篇文章主要為大家介紹了從Hello?World開始理解GraphQL背后處理過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • java阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字

    java阿拉伯?dāng)?shù)字轉(zhuǎn)中文數(shù)字

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)阿拉伯?dāng)?shù)字轉(zhuǎn)換為中文數(shù)字,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 關(guān)于Java虛擬機(jī)HotSpot

    關(guān)于Java虛擬機(jī)HotSpot

    這篇文章主要介紹了關(guān)于Java虛擬機(jī)HotSpot,在Java類中的一些方法會被由C/C++編寫的HotSpot虛擬機(jī)的C/C++函數(shù)調(diào)用,不過由于Java方法與C/C++函數(shù)的調(diào)用約定不同,所以并不能直接調(diào)用,需要JavaCalls::call()這個函數(shù)輔助調(diào)用,下面我們來看看文章對內(nèi)容的具體介紹
    2021-11-11

最新評論

万年县| 五台县| 新建县| 潜江市| 天祝| 弥渡县| 光山县| 瑞丽市| 隆林| 乐都县| 亚东县| 乌鲁木齐县| 常宁市| 茂名市| 宜丰县| 焦作市| 昌黎县| 昆明市| 宜春市| 卢湾区| 寿阳县| 铜梁县| 海门市| 玛曲县| 两当县| 老河口市| 建平县| 娱乐| 蒙山县| 抚宁县| 社旗县| 榆中县| 屯留县| 南澳县| 丹凤县| 环江| 溧水县| 长沙市| 泸西县| 高尔夫| 西乌珠穆沁旗|