spring boot构建Stomp客户端

简介: 配置包括三部分,一个是基本的websocket客户端配置,另一个是Stomp客户端配置和会话处理

一、依赖

依赖只有一个,版本跟随spring boot版本就行。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
AI 代码解读

二、客户端配置

配置包括三部分,一个是基本的websocket客户端配置,另一个是Stomp客户端配置和会话处理。

先看基本的websocket客户端配置:

    @Bean
    public WebSocketClient webSocketClient() {
        List<Transport> transports = new ArrayList<>();
        transports.add(new WebSocketTransport(new StandardWebSocketClient()));
        transports.add(new RestTemplateXhrTransport());
        return new SockJsClient(transports);
    }
AI 代码解读

然后是Stomp客户端配置:

  @Bean
    public WebSocketStompClient webSocketStompClient(WebSocketClient webSocketClient, StompSessionHandler stompSessionHandler) {
        WebSocketStompClient webSocketStompClient = new WebSocketStompClient(webSocketClient);
        webSocketStompClient.setMessageConverter(new StringMessageConverter());
        webSocketStompClient.connect("http://localhost:6060/pda-message-websocket", stompSessionHandler);
        return webSocketStompClient;
    }
AI 代码解读

会话处理配置:

    @Bean
    public StompSessionHandler stompSessionHandler() {
        return new ClientStompSessionHandler();
    }
AI 代码解读

三、会话处理程序 ClientStompSessionHandler

这个类继承了 StompSessionHandlerAdapter,包括下面的抽象方法:

    public StompSessionHandlerAdapter() {
    }

    public Type getPayloadType(StompHeaders headers) {
        return String.class;
    }

    public void handleFrame(StompHeaders headers, @Nullable Object payload) {
    }

    public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
    }

    public void handleException(StompSession session, @Nullable StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) {
    }

    public void handleTransportError(StompSession session, Throwable exception) {
    }
AI 代码解读

我们的ClientStompSessionHandler类中,主要实现:afterConnected,handleFrame,handleException,handleTransportError。

首先来看 afterConnected方法,这个方法的调用在客户端连接完成之后:

    @Override
    public void afterConnected(StompSession session, StompHeaders connectedHeaders) {
         //这里需要自己写逻辑,这里只是简单的演示
        logger.info("客户端已连接: headers {}", connectedHeaders);
        session.subscribe("/topic/greeting", this);
        String message = "hello";
        logger.info("客户端发送:{}", message);
        session.send("/app/greeting", message);
    }
AI 代码解读

对帧的处理:

  @Override
    public void handleFrame(StompHeaders headers, Object payload) {
        //这里需要自己写逻辑,这里只是简单的演示
        logger.info("客户端收到消息:{}",payload);
    }
AI 代码解读

客户端异常处理:

    @Override
    public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) {
      //这里需要自己写逻辑,这里只是简单的演示
        logger.error("客户端错误: 异常 {}, command {}, payload {}, headers {}", exception.getMessage(), command, payload, headers);
    }
AI 代码解读

传输异常处理:

   @Override
    public void handleTransportError(StompSession session, Throwable exception) {
      //这里需要自己写逻辑,这里只是简单的演示
        logger.error("客户端传输错误:错误 {}", exception.getMessage());
    }
AI 代码解读

四、启动

   public static void main(String[] args) {
        new SpringApplicationBuilder(ClientWebSocketSockJsStompApplication.class)
                .web(WebApplicationType.NONE)
                .run(args);
    }
AI 代码解读

结果如下:
1690177973797.jpg

目录
打赏
0
0
0
0
173
分享
相关文章
20分钟上手DeepSeek开发:SpringBoot + Vue2快速构建AI对话系统
本文介绍如何使用Spring Boot3与Vue2快速构建基于DeepSeek的AI对话系统。系统具备实时流式交互、Markdown内容渲染、前端安全防护等功能,采用响应式架构提升性能。后端以Spring Boot为核心,结合WebFlux和Lombok开发;前端使用Vue2配合WebSocket实现双向通信,并通过DOMPurify保障安全性。项目支持中文语义优化,API延迟低,成本可控,适合个人及企业应用。跟随教程,轻松开启AI应用开发之旅!
|
3月前
|
使用Java和Spring Data构建数据访问层
本文介绍了如何使用 Java 和 Spring Data 构建数据访问层的完整过程。通过创建实体类、存储库接口、服务类和控制器类,实现了对数据库的基本操作。这种方法不仅简化了数据访问层的开发,还提高了代码的可维护性和可读性。通过合理使用 Spring Data 提供的功能,可以大幅提升开发效率。
99 21
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
913 54
基于开源框架Spring AI Alibaba快速构建Java应用
【潜意识Java】使用SpringBoot构建高效的RESTfulAPI
本文介绍了使用Spring Boot构建RESTful API的完整流程,涵盖从项目创建到API测试的各个步骤。
82 1
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
206 62
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
271 5
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
117 1
|
5月前
|
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
SpringBoot构建Bean(RedisConfig + RestTemplateConfig)
77 2
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
362 2
|
5月前
|
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
736 0