首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从Spring WebSocket STOMP中的取消订阅帧中获取订阅目的地

从Spring WebSocket STOMP中的取消订阅帧中获取订阅目的地,可以通过以下步骤实现:

  1. 首先,需要在Spring应用程序中配置WebSocket和STOMP支持。可以使用Spring Boot自动配置来简化此过程。
  2. 在客户端发起订阅后,当客户端取消订阅时,Spring WebSocket会发送一个取消订阅帧(Unsubscribe Frame)到服务器。
  3. 在服务器端,可以通过实现org.springframework.messaging.simp.annotation.SubscribeMapping注解的方法来处理取消订阅帧。
  4. 在取消订阅帧的处理方法中,可以通过注入SimpMessageHeaderAccessor对象来获取订阅目的地。SimpMessageHeaderAccessor是一个用于访问STOMP消息头的工具类。
  5. 使用SimpMessageHeaderAccessorgetDestination()方法可以获取订阅目的地。

以下是一个示例代码:

代码语言:txt
复制
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SubscribeMapping;
import org.springframework.messaging.simp.annotation.SendToUser;
import org.springframework.messaging.simp.annotation.SubscribeMapping;
import org.springframework.messaging.simp.annotation.UnsubscribeMapping;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.stereotype.Controller;

@Controller
public class WebSocketController {

    @SubscribeMapping("/topic/{destination}")
    public void subscribeDestination(@DestinationVariable String destination, StompHeaderAccessor accessor) {
        // 处理订阅逻辑
    }

    @UnsubscribeMapping("/topic/{destination}")
    public void unsubscribeDestination(@DestinationVariable String destination, StompHeaderAccessor accessor) {
        String unsubscribedDestination = accessor.getDestination();
        // 在这里获取到取消订阅的目的地
    }
}

在上述示例中,unsubscribeDestination方法使用StompHeaderAccessor对象的getDestination()方法获取取消订阅的目的地。

对于Spring WebSocket STOMP的更多详细信息和用法,可以参考腾讯云的相关文档和示例代码:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

spring ws stomp接口式编程

概要 在项目开发,使用Websocket订阅可以实现实时推送数据更新和变化。但是,这也存在一些痛点。首先,Websocket订阅需要对订阅对象进行管理,确保订阅准确性和及时性。...STOMP 子协议客户端对象 var stompClient = Stomp.over(socket); // 向服务器发起websocket连接并发送CONNECT stompClient.connect...@SendTo是Spring框架一个注解,用于发送消息到指定目的地。它通常用于定义方法级别的消息处理程序,当消息到达时,该方法将被调用。...小结 Spring STOMP是一种基于WebSocket协议消息传输协议,它提供了一种简单方式来实现实时Web应用程序。...下面是Spring STOMP使用总结: 配置WebSocket支持 在Spring配置文件,需要通过@EnableWebSocketMessageBroker注解启用WebSocket消息代理。

27120

Spring消息之STOMP

就像HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMPWebSocket之上提供了一个基于线路格式(frame-based wire format)层,用来定义消息语义。     ...在这个例子STOMP命令是send,表明会发送一些内容。紧接着是三个头信息:一个表示消息事务机制,一个用来表示消息要发送到哪里目的地,另外一个则包含了负载大小。...需要在spring-websocket 配置类重写 configureClientInboundChannel 方法,添加上用户认证。...我们可以把错误发送给用户特定目的地上,然后用户目的地订阅消息,从而用户就能知道自己出现了什么错误啦......Map,它会包含在STOMP //事务支持 var tx = stomp.begin(); stomp.send("/app/marco", {transaction: tx.id

3.3K40

SpringBoot2.x系列教程(四十六)Spring Boot集成WebSocketSTOMP协议简介

在上篇文章我们学习了WebSocket基础概念,依旧相关实战项目。在本篇文章,我们来学习一下如何基于STOMP协议来进行WebSocket协议实现。...也就是说基于WebSocket协议有多种实现,基于STOMP来实现是其中一种,也是Spring Boot推荐一种。 学习完WebSocket协议,我们知道它并没有规定其消息发送详细格式。...作为消费者时通过发送SUBSCRIBE到已知地址来进行消息订阅,当有生产者发送消息到对应订阅地址时,作为消费者便会接收到对应消息。...Spring BootSTOMP 首先看STOMPSpring Boot简单流程图: ?...broker构建MESSAGE命令消息, 通过response channel推送给所有订阅对应地址消费者 小结 本篇文章,关于STOMP协议相关内容就讲到这里,下篇文章,我们将以实战形式,展示如何

1.6K20

WebSocket姨母级教程

与 HTTP(它是应用程序级协议)不同,在 WebSocket 协议,传入消息根本没有足够信息供框架或容器知道如何路由或处理它。...作为消费者,对目标地址发送 SUBSCRIBE ,并作为 MESSAGE 服务器接收消息。 (4). STOMP STOMP 是基于协议,其以 HTTP 为模型。...使用 STOMP 作为 WebSocket 子协议好处 无需发明自定义消息格式 在浏览器 使用现有的stomp.js客户端 能够根据目的地将消息路由到 可以使用成熟消息代理(例如RabbitMQ,...Spring 封装 STOMP 使用 Spring STOMP 支持时,Spring WebSocket 应用程序充当客户端 STOMP 代理。...brokerChannel:用于服务器端、应用程序向消息代理发送消息 Broker: 存放消息中间件,client 可以订阅 broker 消息。

2.3K20

Spring Boot实现带STOMPWebSocket

这些解决方案每个都有其优缺点。在本文中,我将向您展示如何使用 SpringBoot实现 WebSocket。...在本文另一部分,我将简要讨论WebSocket安全问题以及如何确保即使环境不支持 WebSocket协议,基于 WebSocket解决方案也能运行。...它定义了如何将字节流转换为可以包含文本或二进制消息。由于消息本身不提供有关如何路由或处理它任何其他信息,因此很难在不编写其他代码情况下实现更复杂应用程序。...SockJS传输分为三大类: WebSocket, HTTPStreaming和 HTTPLongPolling。通信从 SockJS发送 GET /info以服务器获取基本信息开始。...然后,不需要在 WebSocketConfig启用简单代理,而是需要启用 Stomp代理中继,该中继将消息转发到外部消息代理和外部消息代理转发消息。

5.5K20

《菜农升职记》之 Websocket

小菜农又陷入了沉思,这可该如何是好~ 小菜农随后便打开了某度,看到了一个关键词 SSE SSE 全称 Server-Sent Events,指的是网页自动获取来自服务器更新,也就是自动化获取服务端推送至网页数据...连接相关 1、CONNECT (连接) 2、CONNECTED (成功连接) 客户端相关 1、SEND(发送) 2、SUBSRIBE(订阅) 3、UNSUBSCRIBE(取消订阅) 4、BEGIN(开始...stomp 拦截器: 接收客户端消息地方: 发送消息: 到这里服务端部分代码便已经实现了~客户端部分也很简单只需要引入两个 js 便可实现 这里为了在客户端接收到消息,必须要先订阅一个目的地...destination,也就是使用 subscribe()去订阅,这个方法有两个必需参数:目的地,回调函数。...:用于服务器,应用程序向消息代理发送消息 Broker:存放消息中间件,client 可以订阅 broker 消息 可以看出stomp是一种类似订阅发布模式,我们可以动态灵活声明主题,前端可以订阅不同主题

44320

WebSocket 介绍以及配合 STOMP 使用

由于近期需要使用 WebSocket 部分功能,然而在工作过程,发现自己对这部分知识点不是很了解,而且对于后台同学提出 WebSocketSTOMP 组合,不知如何下手。...本文行文为三个部分,分别讲述:Socket 是什么,WebSocket 是什么,STOMP 是什么,如何结合后两者投入使用。 1....// 客户端: SEND // 发送消息到服务端,可添加自定义 header,body 携带内容 SUBSCRIBE // 用于注册给定目的地send,被注册目的地收到任何消息豆浆通过MESSAGE...发送过来 UNSUBSCRIBE // 取消注册监听 BEGIN // 事务操作开始 COMMIT // 事务提交 ABORT // 事务过程回滚 ACK // 确认订阅消息消费...// 当调用 websocket send 方法时候 this.send = function (topic, headers, body) { // 将消息内容组装成 stomp 协议

2.8K20

代码审计| Spring框架实例篇

Java代码审计Spring框架思路篇,斗哥为大家讲述了如何得到Spring审计Demo,审计源码,根据IDEA与Spring框架审计思路初步判定是否存在漏洞。...3.服务端和客户端建立起连接后,服务端接收到SUBSCRIBE订阅消息后获取headers并且在当前会话查找headersselector值最终执行。...WebSocket是底层协议,而 STOMP 是基于 WebSocket(SockJS)上层协议 就像HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMPWebSocket之上提供了一个基于线路格式...ID来确定会话,客户端获取headers和selector进行绑定。...(2)然后会话headers获取selector值当作expression最后执行(上文提到headers可以在客户端定义,所以我们在headers当中selector传入poc就可以达到表达式注入目的

1.2K20

第二章:WebSocket集群分布式改造——多人聊天室

本文内容摘要: 为何要改造为分布式集群 如何改造为分布式集群 用户在聊天室集群如何发消息 用户在聊天室集群如何接收消息 补充知识点:STOMP 简介 功能一:向聊天室集群全体用户发消息——Redis...就像HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMPWebSocket之上提供了一个基于线路格式(frame-based wire format)层,用来定义消息语义。...在集群,我们需要服务器把消息Redis拿出来,并且推送到自己管用户那边,我们在Service层实现消息推送。...在应用任意地方发送消息: spring-websocket 定义了一个 SimpMessageSendingOperations 接口(或者使用SimpMessagingTemplate ),可以实现自由向任意目的地发送消息...,并且订阅目的地所有用户都能收到消息。

5K40

【多人聊天室】WebSocket集群分布式改造

本文内容摘要: 为何要改造为分布式集群 如何改造为分布式集群 用户在聊天室集群如何发消息 用户在聊天室集群如何接收消息 补充知识点:STOMP 简介 功能一:向聊天室集群全体用户发消息——Redis...就像HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMPWebSocket之上提供了一个基于线路格式(frame-based wire format)层,用来定义消息语义。...在集群,我们需要服务器把消息Redis拿出来,并且推送到自己管用户那边,我们在Service层实现消息推送。...在应用任意地方发送消息: spring-websocket 定义了一个 SimpMessageSendingOperations 接口(或者使用SimpMessagingTemplate ),可以实现自由向任意目的地发送消息...,并且订阅目的地所有用户都能收到消息。

3.5K32

第二章:WebSocket集群分布式改造——实现多人在线聊天室

用户在聊天室集群如何接收消息 说完了发送消息,那么如何保证Alice发消息,其他所有人都能收到呢,前面我们知道了Alice发送消息已经被传到了Redis频道,那么所有服务器都必须订阅这个Redis...就像HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMPWebSocket之上提供了一个基于线路格式(frame-based wire format)层,用来定义消息语义。...在集群,我们需要服务器把消息Redis拿出来,并且推送到自己管用户那边,我们在Service层实现消息推送。...在应用任意地方发送消息: spring-websocket 定义了一个 SimpMessageSendingOperations 接口(或者使用SimpMessagingTemplate ),可以实现自由向任意目的地发送消息...,并且订阅目的地所有用户都能收到消息。

2.2K10

Spring国际认证指南:使用 WebSocket 构建交互式 Web 应用程序

STOMP 是在较低级别的 WebSocket 之上运行子协议。 你将建造什么 您将构建一个接受带有用户名消息服务器。作为响应,服务器会将问候推送到客户端订阅队列。... Spring Initializr 开始 您可以使用这个预先初始化项目并单击 Generate 下载 ZIP 文件。此项目配置为适合本教程示例。...如果您 IDE 具有 Spring Initializr 集成,您可以 IDE 完成此过程。 你也可以 Github 上 fork 项目并在你 IDE 或其他编辑器打开它。...考虑服务交互开始这个过程。 该服务将接受在正文为 JSON 对象 STOMP 消息包含名称消息。...创建消息处理控制器 在 Spring 处理 STOMP 消息传递方法STOMP 消息可以路由到@Controller类。

1.9K20

CVE-2018-1270&CVE-2018-1275 spring-messaging远程代码执行漏洞分析

在引入且使用spring-messaging组件时,攻击者可通过WebSocket向服务器端发送携带有恶意代码STOMP消息,从而导致远程代码执行攻击。...这样就可以建立一个发布订阅系统,消息可以客户端发送到服务器进行操作,服务器也可以推送消息到客户端。 ?...用户定义headers通常用于允许使用者在进行订阅selector来过滤基于应用程序定义headers消息。...,服务端接收到SUBSCRIBE订阅消息并获取headers 客户端发送消息,服务端在当前会话查找headersselector值最终执行 接下来我们根据之前分析传入poc,并分析建立CONNECT...过程时候获取headersselector整个过程 ?

2.9K30

手把手搭建WebSocket多人在线聊天室

withSockJS()是用来为不支持websocket浏览器启用后备选项,使用了SockJS。 方法名STOMP是来自Spring框架STOMP实现。STOMP代表简单文本导向消息传递协议。...它没有定义诸如以下内容:如何仅向订阅特定主题用户发送消息,或者如何向特定用户发送消息。我们需要STOMP来实现这些功能。...配置目的地以/app开头客户端发送所有消息都将路由到这些使用@MessageMapping注释消息处理方法。...在SessionDisconnect事件,编写代码用来websocket会话中提取用户名,并向所有连接客户端广播用户离开事件。...成功连接后,客户端订阅/topic/public,并通过向/app/chat.addUser目的地发送消息将该用户名称告知服务器。

4.6K60

stomp spring ws接口调用

STOMP(Simple Text Oriented Messaging Protocol)是一种用于在客户端和服务器之间进行实时消息传递简单文本协议。...在Spring框架STOMP被用于创建交互式Web应用程序,通过提供一个基于WebSocket通信子协议来实现。...这使得客户端和服务器之间能够进行异步消息传递,从而实现Web应用程序实时更新和通知。 这种方式比起websocket有一个非常好特点,就是它可以使用几个注解就可以像接口编程一样。...同时支持像ws一样全双工操作方式或者像队列一样,发布订阅。当然也支持集成到队列进行一个交互。这里只是简单写了一个demo,后续进行深度解释其中源码原理。...STOMP 子协议客户端对象 var stompClient = Stomp.over(socket); // 向服务器发起websocket连接并发送CONNECT stompClient.connect

14410

再谈 websocket 论架构设计

翻译: 在客户端与服务器端交互web应用websocket最适合在高频率低延迟场景下,进行事件交换和处理 此段来源于spring websocket官方文档 了解以上知识后,我举出几个比较常见场景...这是为了消息统一管理,进行机器扩容时,可进行负载均衡部署 使用spring websocket: 使用spring websocket,是因为他提供了STOMP传输自协议同时,还提供了StockJS...,@Headers,MessageHeaders,MessageHeaderAccessor, SimpMessageHeaderAccessor,StompHeaderAccessor 以上这些都是获取消息头...注解broadcast,则表明消息不进行多会话传播(有可能一个用户登录3个浏览器,有三个会话),如果此broadcast=false,则只传给当前会话,不进行其他会话传播 总结 本文websocket...最终以一个应用场景为例,项目的结构设计,以及代码策略设计,设计模式等不同方面展示了websocket通讯功能在项目中使用。

2K11

使用消息队列实现 分布式 webSocket

陈某Spring Cloud Alibaba实战项目》 视频教程已经录完了,涉及到Alibaba各种中间件、OAuth2微服务认证鉴权、全链路灰度发布、分布式事务实战,戳这里--->Spring...Cloud Alibaba 实战 视频专栏 开放订阅~ 上周知识星球球友问了一个关于websocket问题,大致如下: 简单概括一下:如果我们项目是分布式环境,登录用户被Nginx反向代理分配到多个不同服务器...,那么在其中一个服务器建立了WebSocket连接用户如何给在另外一个服务器上建立了WebSocket连接用户发送消息呢?...、Kafka等)topic,然后每个应用节点都订阅这个topic,在接收到WebSocket消息后取出这个消息“消息接收者用户ID/用户名”,然后再比对自身是否存在相应用户连接,如果存在则推送消息...获取WebSocket客户端订阅地址 WebSocketChannelEnum channelEnum = WebSocketChannelEnum.fromCode(redisWebsocketMsg.getChannelCode

1.4K21

学习WebSocket

一、聊聊 WebSocket HTML5技术流行至今,WebSocket已经有非常广泛应用: 在线游戏,提供实时操作交互体验 社交平台,与好友实时私信对话 新闻动态,获得感兴趣主题信息推送 ....取消订阅 BEGIN 开启事务 COMMIT 提交事务 ABORT 回滚事务 ACK 确认消费 NACK 消息丢弃 DISCONNECT 断开连接 一个简单STOMP消息大致如下: CONNECT...借助Stomp 协议,可以很方便实现一种"订阅-发布"通用机制,这个就是非常具有竞争力一个特性了。...会自动引入spring-websocket 依赖,而后者就实现了WebSocket 操作高级封装。...还有一个好消息,就是spring-websocket 也默认支持了 Stomp协议(看吧,Stomp支持者太多了)。而除此之外,还内置了一个叫 SocketJS 东西。

1.4K10
领券