AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

詳解基于SpringBoot的WebSocket應用開發

來源: 責編: 時間:2024-03-19 09:22:30 187觀看
導讀在現代Web應用中,實時交互和數據推送的需求日益增長。WebSocket協議作為一種全雙工通信協議,允許服務端與客戶端之間建立持久性的連接,實現實時、雙向的數據傳輸,極大地提升了用戶體驗。本文將詳細介紹如何在Spring Boot

CMR28資訊網——每日最新資訊28at.com

在現代Web應用中,實時交互和數據推送的需求日益增長。WebSocket協議作為一種全雙工通信協議,允許服務端與客戶端之間建立持久性的連接,實現實時、雙向的數據傳輸,極大地提升了用戶體驗。本文將詳細介紹如何在Spring Boot框架中使用WebSocket進行高效、穩定的實時通信。CMR28資訊網——每日最新資訊28at.com

WebSocket簡介

WebSocket是一種在單個TCP連接上進行全雙工通信的協議,其最大的特點是服務器可以主動向客戶端發送消息,而不需要客戶端先發起請求。相較于傳統的HTTP長輪詢或輪詢機制,WebSocket能有效減少不必要的網絡通信開銷,并提供更優的實時性。CMR28資訊網——每日最新資訊28at.com

SpringBoot集成WebSocket

添加依賴

首先,在Spring Boot項目中引入WebSocket支持。在pom.xml文件中添加如下依賴:CMR28資訊網——每日最新資訊28at.com

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

創建WebSocket配置類

創建一個WebSocket配置類,通過WebSocketConfigurer接口來自定義WebSocket處理邏輯。例如:CMR28資訊網——每日最新資訊28at.com

@Configuration@EnableWebSocketpublic class WebSocketConfig implements WebSocketConfigurer {    @Override    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {        // 注冊WebSocket處理器,指定訪問路徑        registry.addHandler(myWebSocketHandler(), "/webSocket/{sid}");    }    @Bean    public WebSocketHandler myWebSocketHandler() {        return new MyWebSocketHandler();    }}

實現WebSocket處理器

創建一個實現WebSocketHandler接口的類,如MyWebSocketHandler,并重寫其中的方法以處理WebSocket的生命周期事件(如打開、關閉、接收消息等):CMR28資訊網——每日最新資訊28at.com

@Componentpublic class MyWebSocketHandler implements WebSocketHandler {    private static final CopyOnWriteArraySet<MyWebSocketHandler> webSocketSet = new CopyOnWriteArraySet<>();    private Session session;    private String sid;    @Override    public void afterConnectionEstablished(Session session) throws Exception {        this.session = session;        sid = session.getAttributes().get("sid").toString();        webSocketSet.add(this);        log.info("WebSocket連接已建立, sid: {}", sid);    }    @Override    public void handleMessage(String message, Session session) throws IOException {        log.info("接收到{}的信息: {}", sid, message);        // 群發消息或其他處理邏輯        for (MyWebSocketHandler item : webSocketSet) {            try {                if (item.sid.equals(sid)) {                    item.sendMessage(message);                }            } catch (IOException e) {                log.error("發送消息時發生錯誤", e);            }        }    }    @Override    public void handleTransportError(Throwable exception, Session session) {        if (session.isOpen()) {            session.close();        }        webSocketSet.remove(this);        log.error("WebSocket連接發生錯誤", exception);    }    @Override    public void afterConnectionClosed(Session session, CloseStatus status) {        webSocketSet.remove(this);        log.info("WebSocket連接已關閉, sid: {}, 原因: {}", sid, status.getReason());    }    @Override    public boolean supportsPartialMessages() {        return false;    }    private void sendMessage(String message) throws IOException {        session.getBasicRemote().sendText(message);    }        // 可以增加根據sid篩選的消息推送方法    public static void sendInfo(SocketMsg socketMsg, String targetSid) throws IOException {        // ...    }}

客戶端連接WebSocket

在前端JavaScript代碼中使用WebSocket API與后端建立連接,并處理各種事件:CMR28資訊網——每日最新資訊28at.com

var ws = new WebSocket('ws://localhost:8080/webSocket/' + uniqueSessionId);ws.onopen = function(event) {    console.log('WebSocket連接已建立');};ws.onmessage = function(event) {    console.log('接收到服務器消息:', event.data);};ws.onerror = function(error) {    console.error('WebSocket連接發生錯誤:', error);};ws.onclose = function(event) {    console.log('WebSocket連接已關閉,原因:', event.reason);};// 發送消息到服務器ws.send(JSON.stringify({message: 'Hello, Server!'}));

總結

通過上述步驟,我們已經在Spring Boot項目中成功實現了WebSocket功能。需要注意的是,實際應用場景中可能需要對用戶權限、連接管理、消息隊列、心跳檢測等功能進行更細致的設計與實現,以確保WebSocket服務的穩定性和性能表現。同時,WebSocket技術的應用場景非常廣泛,包括但不限于即時聊天、在線協作、實時監控等。CMR28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-77680-0.html詳解基于SpringBoot的WebSocket應用開發

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Rust學習筆記:基礎概念介紹

下一篇: Vue3問題:如何在頁面上添加水印?

標簽:
  • 熱門焦點
  • Java NIO內存映射文件:提高文件讀寫效率的優秀實踐!

    Java的NIO庫提供了內存映射文件的支持,它可以將文件映射到內存中,從而可以更快地讀取和寫入文件數據。本文將對Java內存映射文件進行詳細的介紹和演示。內存映射文件概述內存
  • 從零到英雄:高并發與性能優化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經為公司的系統在面對高并發和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 自律,給不了Keep自由!

    來源 | 互聯網品牌官作者 | 李大為編排 | 又耳 審核 | 谷曉輝自律能不能給用戶自由暫時不好說,但大概率不能給Keep自由。近日,全球最大的在線健身平臺Keep正式登陸港交所,努力
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 東方甄選單飛:有些鳥注定是關不住的

    文/彭寬鴻編輯/羅卿東方甄選創始人俞敏洪帶隊的&ldquo;7天甘肅行&rdquo;直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,&ldquo;7
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • OPPO K11搭載高性能石墨散熱系統:旗艦同款 性能涼爽釋放

    日前OPPO官方宣布,將于7月25日14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣點就是將配備索尼
Top