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

@MassageMapping和@SendTo注解详解

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

一、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("/gs-guide-websocket");
    }

}
  • @EnableWebSocketMessageBroker注解:将此注释添加到@Configuration类中,以使用更高级别的消息传递子协议通过WebSocket启用代理支持的消息传递。
  • setApplicationDestinationPrefixes方法:配置注解标注的应用程序的前缀,可以配置一个或多个;
  • enableSimpleBroker方法:启用一个简单的消息代理,并配置一个或多个前缀来过滤以代理为目标的目的地(例如:前缀”/topic“的目的地)
  • addEndpoint方法:在给定的映射路径上通过WebSocket端点注册STOMP。
二、消息处理器:
@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客户端部分代码:
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


http://www.kler.cn/news/359671.html

相关文章:

  • Shell并发执行:提升脚本效率的终极指南
  • 深入理解 Kafka
  • 【Python网络编程】学习Socket编程,打造网络应用!
  • 设计模式(c++)
  • 【数学二】多元函数微积分学-多元函数的微分
  • 代码训练营 day38|LeetCode 62,LeetCode 63
  • 每月洞察:App Store 和 Google Play 的主要更新
  • 【MATLAB 串口调试+虚拟串口测试】
  • 优化UVM环境(七)-整理环境,把scoreboard拿出来放在project_common环境里
  • 代码随想录算法训练营第十一天|383. 赎金信, 15. 三数之和
  • Verilator——最简单、最细节上手教程
  • 后端接收参数的几种常用注解
  • 中国移动机器人将投入养老场景;华为与APUS共筑AI医疗多场景应用
  • 2024年4个好用的录屏软件大盘点,轻松录制精彩瞬间。
  • Redis进阶
  • 浏览器实时更新esp32-c3 Supermini http server 数据
  • 智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案
  • Redis主从复制实现原理
  • 汽车行业焕新潮流涌动,联众优车以优质服务响应市场变化
  • vue前端开发框架的常见知识点和应用