如何在Spring消息传递中为套接字交换区分目的地



WebSocketMessageBrokerConfigurer的实现必须实现两个方法。configureMessageBroker是其中之一:

public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")...};

在这个例子中,我们配置了所有带有"/app"前缀将被路由到控制器类中带有@ messagemapping注释的方法。

但是setApplicationDestinationPrefixes接受可变长度的字符串数组。如何在控制器中分配这个或那个特定的方法,所有这些方法都用@MessageMapping注释到特定的前缀,以防我们有几个前缀?

最初我认为答案是不仅在方法上而且在控制器类上使用@MessageMapping,并将控制器级注释映射到前缀,而方法级注释映射到路由的较低部分。

我在https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/html/websocket.html上找到了一个例子,它给了我这个想法:

@Controller
@MessageMapping("foo")
public class FooController {
@MessageMapping("bar.{baz}")
public void handleBaz(@DestinationVariable String baz) {
}
}

,但后来我注意到,这样的组合地址路由"/app/foo.bar.{baz}"。{baz}是这里的占位符

最新更新