当前位置: 首页 > news >正文

使用Spring Boot实现WebSocket广播

使用Spring Boot实现WebSocket广播

Spring Boot提供了对WebSocket的支持,可以方便地实现广播功能。以下是实现步骤:

  1. 添加依赖:在pom.xml文件中添加Spring Boot WebSocket的依赖:

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

2配置WebSocket:创建一个配置类WebSocketConfig,继承AbstractWebSocketMessageBrokerConfigurer,并配置WebSocket的端点和消息代理:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/websocket").withSockJS();
    }
}

创建控制器:创建一个控制器WebSocketController,用于处理客户端发送的消息并将其广播到所有订阅了相应主题的客户端:

@Controller
public class WebSocketController {
    @MessageMapping("/broadcast")
    @SendTo("/topic/messages")
    public String broadcastMessage(@Payload String message) {
        return "广播消息: " + message;
    }
}

 客户端代码:在前端应用中,使用JavaScript和SockJS库连接到WebSocket服务器并发送/接收消息:

JavaScript

var socket = new SockJS('/websocket');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
    console.log('Connected: ' + frame);

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

    stompClient.send("/app/broadcast", {}, 'Hello, WebSocket!');
});

相关文章:

  • 嵌入式开发面试常见编程题解析:pthread_join 与 pthread_detach 详解
  • 感受野(​​Receptive Field​​)
  • 高瓴资本张磊的顶级价值投资之道
  • SSR同构渲染深度解析
  • 实现在h5中添加日历提醒:safari唤起系统日历,其它浏览器跳转google日历
  • 阿里巴巴Qwen3发布:登顶全球开源模型之巅,混合推理模式重新定义AI效率
  • 选择AGV行业用的丝杆升降机时,需要考虑哪些因素?
  • Jupyter notebook快捷键
  • 飞蛾扑火算法优化+Transformer四模型回归打包(内含MFO-Transformer-LSTM及单独模型)
  • 高效 Transformer 的综述
  • Ansible 铸就 Linux 安全之盾(Ansible Builds Linux Security Shield)
  • 4、RabbitMQ的七种工作模式介绍
  • 算法备案类型解析:如何判断你的算法属于哪种类型?
  • 【动手学大模型开发】使用 LLM API:讯飞星火
  • ShenNiusModularity项目源码学习(25:ShenNius.Admin.Mvc项目分析-10)
  • Go语言Context机制深度解析:从原理到实践
  • 【angular19】入门基础教程(四):默认的css隔离作用域
  • 项目三 - 任务1:采用面向对象方式求三角形面积
  • Tauri 跨平台开发指南及实战:用前端技术征服桌面应用(合集-万字长文)
  • Javascript 中作用域的理解?
  • 83岁连丽如每周登台说书,还上了15堂连派评书课
  • “麒麟王”亮相上海彩市,体彩即开票“瑞兽家族”迎来新成员
  • 美航母一战机坠海,美媒:为躲避胡塞武装攻击,损失超六千万美元
  • 脱发后怎么把头发养回来?脱发自救指南来了
  • 核电开闸!国常会核准10台新机组,拉动超2000亿投资,新项目花落谁家?
  • “梅花奖”快闪走入上海张园,朱洁静在石库门前起舞