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

springboot中websocket簡單實現

 更新時間:2023年01月06日 09:03:04   作者:C~LOVER  
本文主要介紹了springboot中websocket簡單實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

websocket簡單實現

websocket是HTML5下一種新的協(xié)議,本質上websocket是一個基于tcp的協(xié)議。它實現了瀏覽器與服務器之間的雙向通信,能更好的節(jié)省服務器資源和寬帶并實現實時的通信。
websocket的幾個優(yōu)點?
1、使用的資源少,因為它的頭更小。
2、實時性更強:服務端可以通過連接主動向客戶端推送消息。
3、有狀態(tài):開啟連接之后可以不用每次都攜帶狀態(tài)信息。

下面介紹spring集成的websocket的使用方法。

引入依賴包

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

實現WebSocketHandler 接口重寫相關方法。

主要有以下幾個方法:
afterConnectionEstablished:連接成功后調用。
handleMessage:處理發(fā)送來的消息。
handleTransportError: WS 連接出錯時調用。
afterConnectionClosed:連接關閉后調用。
supportsPartialMessages:是否支持分片消息。

import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.*;

import java.io.IOException;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 測試websocket
 *
 * @author yjj
 * @version 1.0
 * @since 2022 -12-28 14:55:29
 */
@Slf4j
@Component
public class TestWebsocket implements WebSocketHandler {

    protected static final CopyOnWriteArrayList<WebSocketSession> WEB_SOCKET_SESSIONS = new CopyOnWriteArrayList<>();

    /**
     * 建立連接后操作
     *
     * @param session       連接session信息
     * @throws Exception    exception
     */
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        WEB_SOCKET_SESSIONS.add(session);
        sendMessage("連接成功~~~~~~,sessionId=" + session.getId());
    }

    /**
     * 接收到消息后的處理
     *
     * @param session       連接session信息
     * @param message       信息
     * @throws Exception    exception
     */
    @Override
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        sendMessage("接收到的消息為=【"+ message +"】,sessionId=【"+ session.getId() +"】,回復消息=【你好呀!】");
    }

    /**
     * ws連接出錯時調用
     *
     * @param session       session連接信息
     * @param exception     exception
     * @throws Exception    exception
     */
    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        if(session.isOpen()){
            sendMessage("ws連接出錯,即將關閉此session,sessionId=【"+ session.getId() +"】");
            session.close();
        }
        WEB_SOCKET_SESSIONS.remove(session);
    }

    /**
     * 連接關閉后調用
     *
     * @param session           session連接信息
     * @param closeStatus       關閉狀態(tài)
     * @throws Exception        exception
     */
    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
        if(session.isOpen()){
            sendMessage("ws連接即將關閉此session,sessionId=【"+ session.getId() +"】");
            session.close();
        }
        WEB_SOCKET_SESSIONS.remove(session);
    }

    /**
     * 是否支持分片消息
     */
    @Override
    public boolean supportsPartialMessages() {
        return false;
    }

    /**
     * 發(fā)送消息
     * @param message          消息
     * @throws IOException     ioException
     */
    public void sendMessage(String message) throws IOException {
        if(CollUtil.isNotEmpty(WEB_SOCKET_SESSIONS)){
            for (WebSocketSession webSocketSession : WEB_SOCKET_SESSIONS) {
                webSocketSession.sendMessage(new TextMessage(message));
            }
        }
    }
}

監(jiān)聽某個URL,websocket配置

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.WebSocketHandler;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

import javax.annotation.Resource;
/**
 * websocket配置
 *
 * @author yjj
 * @version 1.0
 * @since 2022 -12-28 15:10:11
 */
@EnableWebSocket
@Configuration
public class WebSocketConfig implements WebSocketConfigurer {

    @Resource
    private TestWebsocket testWebsocket;

    /**
     * Register {@link WebSocketHandler WebSocketHandlers} including SockJS fallback options if desired.
     *
     * @param registry
     */
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(testWebsocket, "/test").setAllowedOrigins("*");
    }
}

測試
使用websocket工具進行連接后效果圖如下:

在這里插入圖片描述

 到此這篇關于springboot中websocket簡單實現的文章就介紹到這了,更多相關springboot websocket實現內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java安全之Tomcat6 Filter內存馬問題

    Java安全之Tomcat6 Filter內存馬問題

    這篇文章主要介紹了Java安全之Tomcat6 Filter內存馬,通過本文探討下Tomcat6與Tomcat8之間的區(qū)別,主要看下tomcat6和tomcat8之間createFilterChain不相同的地方 看到ApplicationFilterFactory#createFilterChain,需要的朋友可以參考下
    2022-10-10
  • 解讀SpringBoot接收List<Bean>參數問題(POST請求方式)

    解讀SpringBoot接收List<Bean>參數問題(POST請求方式)

    這篇文章主要介紹了解讀SpringBoot接收List<Bean>參數問題(POST請求方式),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • java使用Abobe Acrobat DC生成模板

    java使用Abobe Acrobat DC生成模板

    這篇文章主要介紹了java使用Abobe Acrobat DC生成模板,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java數據結構及算法實例:冒泡排序 Bubble Sort

    Java數據結構及算法實例:冒泡排序 Bubble Sort

    這篇文章主要介紹了Java數據結構及算法實例:冒泡排序 Bubble Sort,本文直接給出實現代碼,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-06-06
  • 解決mybatis resultMap根據type找不到對應的包問題

    解決mybatis resultMap根據type找不到對應的包問題

    這篇文章主要介紹了解決mybatis resultMap根據type找不到對應的包問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • JAVA求兩直線交點和三角形內外心的方法

    JAVA求兩直線交點和三角形內外心的方法

    本文提供了JAVA求兩直線交點、三角形外心、三角形內心的代碼和算法講解,大家可以參考使用
    2013-11-11
  • 解決SpringBoot打成jar運行后無法讀取resources里的文件問題

    解決SpringBoot打成jar運行后無法讀取resources里的文件問題

    這篇文章主要介紹了解決SpringBoot打成jar運行后無法讀取resources里的文件問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 如何使用SpringMVC的消息轉換器設置日期格式

    如何使用SpringMVC的消息轉換器設置日期格式

    這篇文章主要介紹了如何使用SpringMVC的消息轉換器設置日期格式問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 淺談Java實現面向對象編程java oop

    淺談Java實現面向對象編程java oop

    這篇文章主要介紹了淺談Java實現面向對象編程java oop,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • springMVC 用戶登錄權限驗證實現過程解析

    springMVC 用戶登錄權限驗證實現過程解析

    這篇文章主要介紹了springMVC 用戶登錄權限驗證實現過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11

最新評論

调兵山市| 克拉玛依市| 汕头市| 曲麻莱县| 崇明县| 洛浦县| 上高县| 舟山市| 囊谦县| 临猗县| 娱乐| 遂宁市| 五常市| 南部县| 台州市| 滕州市| 商洛市| 德惠市| 武汉市| 丘北县| 淮北市| 临清市| 前郭尔| 安福县| 新丰县| 遂平县| 冷水江市| 迁安市| 颍上县| 登封市| 湟源县| 清水河县| 五大连池市| 肥西县| 中宁县| 武隆县| 梁河县| 禹州市| 云浮市| 永和县| 丹凤县|