【问题标题】:What is setApplicationDestinationPrefixes being used for?setApplicationDestinationPrefixes 的用途是什么?
【发布时间】:2016-11-14 08:38:12
【问题描述】:

我按照教程在我的 Java Spring 应用程序中实现 websockets。 到目前为止它运行良好,但我真的很想了解它的用途:

config.setApplicationDestinationPrefixes("/app");

我的整个配置看起来像这样

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

  @Override
  public void configureMessageBroker(MessageBrokerRegistry config) {
    config.enableSimpleBroker("/topic");
    config.setApplicationDestinationPrefixes("/app");
  }

  @Override
  public void registerStompEndpoints(StompEndpointRegistry registry) {
    registry.addEndpoint("/hello").withSockJS();
  }
}

我基本上只是不明白 spring docs / the tut 中给出的解释 - 例如

...它为绑定到@MessageMapping-annotated 方法的消息指定“/app”前缀。

【问题讨论】:

    标签: java spring websocket


    【解决方案1】:

    setApplicationDestinationPrefixes("/app") - 用于

    配置一个或多个前缀以过滤目的地定位 应用注释的方法。处理消息时, 匹配的前缀被从目的地中移除,以形成 查找路径。这意味着注释不应包含目标 前缀。1

    参考:-https://helptechcommunity.wordpress.com/2020/01/28/websocket-chat-application-using-spring-boot-and-react-js/

    【讨论】:

      【解决方案2】:

      换句话说,除了确保将在服务器上接收并具有setApplicationDestinationPrefixes 设置的列表中的前缀之一的所有消息之外,它没有任何实际意义。使用@MessageMapping 注释进行注释。

      更简单的 put - 由 @MessageMapping 注释的方法只有在消息具有列表中的前缀之一时才会被触发。

      【讨论】:

      • 这是我需要的解释。干杯维克多!
      • 是否也可以在服务器上用SimpMessagingTemplate.convertAndSend("/app/add", "hello");调用这样的方法?
      • 如何区分不同控制器或单个控制器方法之间的前缀?我的意思是,如果您的控制器中有多个方法,每个方法都与 @MessageMapping 一起使用,您将如何将这个或那个前缀与控制器中的特定方法相关联?
      • 实际上我不明白从@MessageMapping 的属性中删除前缀的动机是什么——为什么不拥有完整的消息路径(或者它们被称为“目的地”?)
      【解决方案3】:

      setApplicationDestinationPrefixes 在使用 STOMP 从客户端发送消息时用作消息映射的前缀。 因此,如果您的客户端使用 STOMP for @MessageMapping("add") 发送数据,那么 stompClient.send("/app/add"..)

      【讨论】:

      • 谢谢!
      • 但是如何区分不同控制器或单个控制器方法之间的前缀?我的意思是,如果您的控制器中有多个方法,每个方法都与 @MessageMapping 一起使用,您将如何将这个或那个前缀与控制器中的特定方法相关联?
      猜你喜欢
      • 2012-06-03
      • 1970-01-01
      • 2010-09-27
      • 2011-12-17
      • 2010-11-21
      • 1970-01-01
      • 2019-05-31
      • 2021-07-19
      相关资源
      最近更新 更多