@MassageMapping和@SendTo注解详解

@MessageMapping注解是Spring Framework中用于WebSocket消息处理的注解,它用于将特定的消息路径映射到处理器方法上。@SendTo注解指定了相应消息应该被发送到的目的地路径。

一、WebSocket配置类:
java 复制代码
@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("/gs-guide-websocket");
    }

}
  • @EnableWebSocketMessageBroker注解:将此注释添加到@Configuration类中,以使用更高级别的消息传递子协议通过WebSocket启用代理支持的消息传递。
  • setApplicationDestinationPrefixes方法:配置注解标注的应用程序的前缀,可以配置一个或多个;
  • enableSimpleBroker方法:启用一个简单的消息代理,并配置一个或多个前缀来过滤以代理为目标的目的地(例如:前缀"/topic"的目的地)
  • addEndpoint方法:在给定的映射路径上通过WebSocket端点注册STOMP。
二、消息处理器:
java 复制代码
@Controller
public class GreetingController {


    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting(HelloMessage message) throws Exception {
        Thread.sleep(1000); // simulated delay
        return new Greeting("Hello, " + HtmlUtils.htmlEscape(message.getName()) + "!");
    }

}

@MessageMapping("/hello")注解表明,当客户端发送消息到/app/hello(注意:路径前缀/app是在配置中设置的)时,将调用greeting方法。@SendTo("/topic/greetings")注解制定了响应消息应该被发送到的目的地路径。

三、基于StampJS客户端部分代码:
js 复制代码
stompClient.onConnect = (frame) => {
    setConnected(true);
    console.log('Connected: ' + frame);
    stompClient.subscribe('/topic/greetings', (greeting) => {
        showGreeting(JSON.parse(greeting.body).content);
    });
};
function sendName() {
    stompClient.publish({
        destination: "/app/hello",
        body: JSON.stringify({'name': $("#name").val()})
    });
}

开源SDK:https://github.com/mingyang66/spring-parent

相关推荐
宠友信息1 天前
消息撤回与已读状态如何在即时通讯源码中统一管理
java·spring boot·websocket·mysql·uni-app
paopaokaka_luck3 天前
基于Springboot3+vue3的旅游景区点评系统(AI审核、webSocket聊天、协同过滤算法、Echarts图形化分析)
websocket·网络协议·旅游
熬夜苦读学习3 天前
基于websocket的多用户五子棋网页游戏
linux·服务器·网络·websocket·网络协议·游戏·五子棋
米尔的可达鸭3 天前
深入操作系统 Socket 底层:EPOLLOUT 可写事件管理 + 非阻塞异步
开发语言·网络·数据结构·经验分享·websocket·网络协议
米尔的可达鸭4 天前
深入操作系统 Socket 底层:套接字控制块、FD映射、阻塞IO核心完整实现
arm开发·数据结构·websocket·网络协议·算法·架构·安全架构
永久鳕7 天前
WebSocket 连接成功但行情不更新,应该先查哪几个状态?
网络·websocket·网络协议
JerrySir8 天前
Node.js WebSocket 优雅关闭:一次滚动发布如何避免 1 万次重连风暴
websocket
CryptoPP8 天前
BSE股票K线数据接入实战:从接口调用到前端图表展示
大数据·前端·网络·人工智能·websocket·网络协议
宠友信息8 天前
多端即时通讯源码技术实践,Redis路由、MySQL持久化与Socket接入
spring boot·websocket·mysql·uni-app
脉动数据行情8 天前
Python WebSocket 实时订阅 NQ(小型纳斯达克指数)完整监听程序
websocket·小纳指·纳斯达克·国际股指·python 量化盯盘