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

@MassageMapping和@SendTo注解详解

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

一、WebSocket配置类:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void configureMessageBroker(MessageBrokerRegistry config) {config.enableSimpleBroker("/topic");config.setApplicationDestinationPrefixes("/app");}@Overridepublic 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 delayreturn 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.lryc.cn/news/466158.html

相关文章:

  • 2.1_Linux发展与基础
  • c#子控件拖动父控件方法及父控件限在窗体内拖动
  • Redis --- 第八讲 --- 关于主从复制哨兵
  • 【数据结构】时间和空间复杂度-Java
  • tensorRT安装详解(linux与windows)
  • MYSQL OPTIMIZE TABLE 命令重建表和索引
  • 开发指南075-各种动画效果
  • 使用 el-upload 如何做到发送一次请求上传多个文件
  • GEE引擎架设好之后进游戏时白屏的解决方法——gee引擎白屏修复
  • Linux LVS 通用命令行
  • laravel .env环境变量原理
  • Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解
  • 新时代AI桌宠:XGO Rider让你的办公室瞬间高大上
  • matlab的resample函数
  • idea怎么取消自动打开项目
  • 蓄电池在线监测系统 各大UPS铅酸蓄电池监测 保障安全
  • Python基础Day13
  • 有趣的css - 跷跷板加载动画
  • 与机器学习的邂逅--自适应神经网络结构的深度解析
  • 用python怎么实现办公自动化【批量生成出货清单】
  • 【Qt】控件——Qt输入类控件、常见的输入类控件、输入类控件的使用、Line Edit、Text Edit、Combo Box、Spin Box
  • 单臂交换知识点
  • CentOS7 上安装GitLab的经历
  • 用python-pptx轻松统一调整演示文档配色方案
  • MySQL-30.索引-介绍
  • 6-2.Android 对话框之基础对话框问题清单(UI 线程问题、外部取消、冲突问题、dismiss 方法与 hide 方法)
  • git配置以及如何删除git
  • 深入理解new Function
  • 服务器训练神经网络必备工具Screen使用教程
  • 跨越数字鸿沟,FileLink文件摆渡系统——您的数据安全高效传输新选择