问题标签 [spring-messaging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - How to get/set the principal and session attributes from Spring 4 stomp websocket methods
I'm doing experiments with Spring 4 websockets and stomp, and I have a hard time figuring out how to get/set the current user and other session attributes in a message handling method annotated with @MessageMapping
.
The documentation says that the message handling methods can take a Principal as argument, and I found that the principal is retrieved by Spring by calling getUserPrincipal()
on the native socket session, and then associated with the socket session, but I haven't found any way to easily customize this behavior, other than writing a servlet filter and wrap the original request into a wrapper returning the principal found in my cookie.
So my questions are:
- How to manually set the principal to the socket session, when the client connects (I have this information thanks to a custom cookie, and I don't use Spring security)?
- If 1 is not possible, how to add additional attributes to the socket session when the client connects?
- How to access the socket session and its attributes from a message handling method?
- Is there a way to access the login and passcode sent by the browser at connection time. They seem to be completely ignore by Spring and not accessible.
spring-mvc - 配置spring MVc websocket消息传递spring security
我将教程http://assets.spring.io/wp/WebSocketBlogPost.html定制到我的应用程序中。当使用 SimpMessageSendingOperations.convertAndSendToUser("fabrice","/stayawakews2/shakebaby", "mano") 从应用程序向服务器发送消息时,日志显示:
/stayawakews2/shakebaby* -userltmei5cm * 。我不知道为什么它会添加价值 -userltmei5cm 。
谢谢
rabbitmq - 使用 Spring 4.0 webstocket stomp api 连接到 Rabbitmq 失败
我尝试使用 Spring 4.0 WebSocketMessageBrokerConfigurer 类与 RabbitMQ 建立 STOMP 连接,但失败了?
代码快照在这里。
注意
- 我正在使用 spring boot 来运行应用程序。事实上,我正在更改现有的 spring 示例“ gs-messaging-stomp-websocket ”。并更改类WebSocketConfig。
- Rabbitmq 在本地安装并启用了 STOMP 插件。
- 添加了所有 maven 依赖项,例如 spring-rabbitmq。
我还需要做其他事情吗?
谢谢,拉菲克
spring - 如何通过 WebSocket 配置回复 Spring 4 STOMP 中未经身份验证的用户?
我正在试验 Spring 4 WebSocket STOMP 应用程序。有没有办法在每个用户都有唯一的会话 ID 的情况下回复单个未经身份验证的用户?现在我只能广播消息或直接将其发送给经过身份验证的用户。
spring-4 - 使用 Spring 4 Websockets 声明和使用 RabbitMQ
在我们当前的应用程序中,我们以这种方式使用 Spring AMQP:
当我在基于 Spring 4 的新应用程序中配置 websocket 时,我不知道如何/在哪里声明交换、队列等......
这东西必须用 AMPQ 来实现吗?
spring - 如何在 Spring Messaging 中指定处理程序生成的内容类型?
我正在试验 Spring 4 WebSocket STOMP 应用程序。有没有办法明确指定处理程序产生的返回消息的内容类型?默认情况下,下面的处理application/json
程序由相应的消息转换器生成和处理。
我正在寻找类似@RequestMapping(produces = "text/xml")
Spring MVC 的东西。
更新(回复罗森的回答):
理想情况下,我希望能够根据用户的要求返回两种格式。但如果我必须选择,我会说 XML 而几乎从不说 JSON(XML 只是一个例子,我们使用二进制格式)。我采用了您建议的第二种方式 - 配置自定义转换器而不是默认转换器。
- 我已经实现了自定义
MessageConverter
扩展AbstractMessageConverter
。在构造函数中,我注册了适当的受支持的 MimeType。 - 然后我通过覆盖
WebSocketMessageBrokerConfigurer
's注册了我的自定义转换器configureMessageConverters
,并false
从该方法返回以不添加默认转换器。 - 一旦我的控制器返回值,我就会在
SendToMethodReturnValueHandler
's中获得 NPEpostProcessMessage
。发生这种情况是因为CompositeMessageConverter
仅包含一个转换器 - 我的自定义转换器。但我的转换器未能AbstractMessageConverter
通过supportsMimeType
检查并返回。这会导致.AbstractMessageConverter
toMessage
null
null
postProcessMessage
作为解决方法,我可以application/json
为我的自定义转换器注册额外的默认 MimeType。但它看起来对我来说太脏了。
heroku - 找不到 Heroku Integration.xml 上的 Spring Boot
我正在尝试按照本指南在 Heroku 上部署Spring Boot应用程序:http: //codingricky.com/booting-spring-boot-into-heroku/(感谢 Ricky Yim)
看起来很简单,但我的应用程序包含依赖项integration.xml
所需的一个:spring-messaging
话虽如此,我不Spring Integration
只是使用 websockets / STOMP 消息传递。所以需要依赖。
当应用程序尝试启动时,我收到一个简单的未找到错误:
本地integration.xml
位于目录中,当我来自 Eclipse/src/main/resource
时位置很好。run as -> spring boot
我还有一个单页 html 和一些 javascript 文件来调试 websockets / STOMP 消息,就像这里的指南:https ://spring.io/guides/gs/messaging-stomp-websocket/
我需要更改什么,以便应用程序/resource
在部署为 jar 时可以在目录中找到这些文件?
java - 无法自动接线。未找到 SimpMessagingTemplate 类型的 bean
我基本上按照文档中提供的指南在 Spring 中配置 Websockets。
我目前正在尝试按照“从任何地方发送消息” 部分中的说明从服务器向客户端发送消息
按照示例,您可以自动装配一个名为 SimpMessagingTemplate 的类
但是,我当前的项目找不到 bean“SimpMessagingTemplate”。(Intellij:'无法自动装配。找不到 SimpMessagingTemplate 类型的 bean'。
我在互联网上检查了几个示例,但我找不到如何让 Spring 创建 SimpMessagingTemplate 的实例。我怎样才能自动接线?
编辑:
我决定发送更多的背景信息。这是我当前的 websocket 配置:
Websocket 与此控制器一起使用
我只是不知道如何使这项工作
由于找不到 bean“SimpMessagingTemplate 模板”。Spring 文档没有提供有关此问题的更多详细信息。
编辑: github中的工作代码示例
java - 如何使用 ExecutorSubscribableChannel
与问题autowire simpmessagingtemplate相关
我遇到了 ExecutorSubscribableChannel 类的问题。我希望服务器向浏览器发送异步消息。如何正确使用 ExecutorSubscribableChannel?
例子:
但是我在行中发送的“hello world”文本
浏览器没有接收到。其他一切正常。
bean 配置为:
提前致谢。
rabbitmq - Consuming Spring Boot "metricsChannel" via Apache Camel/RabbitMQ
Spring Boot publishes all metrics events to a message channel "metricsChannel" when a dependency on spring-messaging is present. In my project I am using Apache Camel along with RabbitMQ as the broker. Is there any way to consume these metrics messages using purely Camel and not spring integration?
I can see Apache Camel has a component SpringIntegration, however I would like to know if there is a way to directly access these messages via the RabbitMQ component or do I have to add dependency on the camel component spring-integration as well?