问题标签 [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.

0 投票
2 回答
15588 浏览

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:

  1. 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)?
  2. If 1 is not possible, how to add additional attributes to the socket session when the client connects?
  3. How to access the socket session and its attributes from a message handling method?
  4. 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.
0 投票
2 回答
1868 浏览

spring-mvc - 配置spring MVc websocket消息传递spring security

我将教程http://assets.spring.io/wp/WebSocketBlogPost.html定制到我的应用程序中。当使用 SimpMessageSendingOperations.convertAndSendToUser("fabrice","/stayawakews2/shakebaby", "mano") 从应用程序向服务器发送消息时,日志显示:

/stayawakews2/shakebaby* -userltmei5cm * 。我不知道为什么它会添加价值 -userltmei5cm 。

谢谢

0 投票
1 回答
1343 浏览

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。

我还需要做其他事情吗?

谢谢,拉菲克

0 投票
2 回答
5311 浏览

spring - 如何通过 WebSocket 配置回复 Spring 4 STOMP 中未经身份验证的用户?

我正在试验 Spring 4 WebSocket STOMP 应用程序。有没有办法在每个用户都有唯一的会话 ID 的情况下回复单个未经身份验证的用户?现在我只能广播消息或直接将其发送给经过身份验证的用户。

0 投票
1 回答
5340 浏览

spring-4 - 使用 Spring 4 Websockets 声明和使用 RabbitMQ

在我们当前的应用程序中,我们以这种方式使用 Spring AMQP:

当我在基于 Spring 4 的新应用程序中配置 websocket 时,我不知道如何/在哪里声明交换、队列等......

这东西必须用 AMPQ 来实现吗?

0 投票
2 回答
3361 浏览

spring - 如何在 Spring Messaging 中指定处理程序生成的内容类型?

我正在试验 Spring 4 WebSocket STOMP 应用程序。有没有办法明确指定处理程序产生的返回消息的内容类型?默认情况下,下面的处理application/json程序由相应的消息转换器生成和处理。

我正在寻找类似@RequestMapping(produces = "text/xml")Spring MVC 的东西。

更新(回复罗森的回答):

理想情况下,我希望能够根据用户的要求返回两种格式。但如果我必须选择,我会说 XML 而几乎从不说 JSON(XML 只是一个例子,我们使用二进制格式)。我采用了您建议的第二种方式 - 配置自定义转换器而不是默认转换器。

  1. 我已经实现了自定义MessageConverter扩展AbstractMessageConverter。在构造函数中,我注册了适当的受支持的 MimeType。
  2. 然后我通过覆盖WebSocketMessageBrokerConfigurer's注册了我的自定义转换器configureMessageConverters,并false从该方法返回以不添加默认转换器。
  3. 一旦我的控制器返回值,我就会在SendToMethodReturnValueHandler's中获得 NPE postProcessMessage。发生这种情况是因为CompositeMessageConverter仅包含一个转换器 - 我的自定义转换器。但我的转换器未能AbstractMessageConverter通过supportsMimeType检查并返回。这会导致.AbstractMessageConvertertoMessagenullnullpostProcessMessage

作为解决方法,我可以application/json为我的自定义转换器注册额外的默认 MimeType。但它看起来对我来说太脏了。

0 投票
1 回答
499 浏览

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 时可以在目录中找到这些文件?

0 投票
4 回答
41082 浏览

java - 无法自动接线。未找到 SimpMessagingTemplate 类型的 bean

我基本上按照文档中提供的指南在 Spring 中配置 Websockets。

我目前正在尝试按照“从任何地方发送消息” 部分中的说明从服务器向客户端发送消息

按照示例,您可以自动装配一个名为 SimpMessagingTemplate 的类

但是,我当前的项目找不到 bean“SimpMessagingTemplate”。(Intellij:'无法自动装配。找不到 SimpMessagingTemplate 类型的 bean'。

我在互联网上检查了几个示例,但我找不到如何让 Spring 创建 SimpMessagingTemplate 的实例。我怎样才能自动接线?

编辑:

我决定发送更多的背景信息。这是我当前的 websocket 配置:

Websocket 与此控制器一起使用

我只是不知道如何使这项工作

由于找不到 bean“SimpMessagingTemplate 模板”。Spring 文档没有提供有关此问题的更多详细信息。

编辑: github中的工作代码示例

0 投票
2 回答
1299 浏览

java - 如何使用 ExecutorSubscribableChannel

与问题autowire simpmessagingtemplate相关

我遇到了 ExecutorSubscribableChannel 类的问题。我希望服务器向浏览器发送异步消息。如何正确使用 ExecutorSubscribableChannel

例子:

但是我在行中发送的“hello world”文本

浏览器没有接收到。其他一切正常。

bean 配置为:

提前致谢。

0 投票
1 回答
246 浏览

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?