是否可以为每个stomp端点分配不同的Controller或至少分配不同的MessageMapping?我的目标是让client 1连接到/endpoint 1,client 2连接到/endpoint 2,而client 1不能访问/endpoint 2的任何主题/队列,反之亦然(它们是完全不同的应用程序)。所以它们将是基于它们所连接的端点的完全封装的实现。
能够为每个端点使用不同的JacksonObjectMapper也是加分。
到目前为止,我已经创建了一个具有2个端点(/endpoint 1和/endpoint 2)的WebSocket配置:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/endpoint1", "/endpoint2")
.setAllowedOriginPatterns("*")
.withSockJS();
}
// etc...
}
我还有一个控制器,它可以处理请求并将它们发送到相应的用户响应队列,但它可以从两个端点访问:
@Controller
public class WebSocketController {
@MessageMapping("/request")
@SendToUser("/queue/response")
public MyResponse handleMessage(MyRequest request) {
// implementation
}
}
**当前行为:**在我当前的实现中,我的客户端连接到哪个端点并不重要,两者都可以访问相同的主题,这是不希望出现的行为。
1条答案
按热度按时间bq8i3lrv1#
您应该更改应用程序设计,以便客户机只能将消息发送到它们各自的 STOMP 目标。可以使用特定于客户机的前缀方式命名 STOMP 目标,例如:
然后,您应该能够按照上面的命名模式定义不同的带
@MessageMapping
注解的消息处理程序: