我正在使用 Spring 5:如何檢測SUBSCRIBE來自 Stomp 客戶端的消息?根據我的理解,@SubscribeMapping應該讓我的控制器方法在客戶端訂閱主題時被調用,但這并沒有發生。這是我的服務器控制器:@Controllerpublic class MessageController { // ... @MessageMapping("/chat/{mId}") @SendTo("/topic/messages") public OutputMessage send(Message message, @DestinationVariable("mId") String mid, MessageHeaders headers, MessageHeaderAccessor accessor) throws Exception { // ... } @SuppressWarnings("unused") @SubscribeMapping({ "/", "/chat", "/topic/messages", "/messages", "/*" }) public void listen(Message message, MessageHeaders headers, MessageHeaderAccessor accessor) throws Exception { int i = 0; System.out.println("subscribed"); }}服務器配置:@Configuration@ComponentScan(basePackages= { "websockets" })@EnableWebSocketMessageBrokerpublic class WebSocketConfig implements WebSocketMessageBrokerConfigurer { @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.enableSimpleBroker("/topic"); config.setApplicationDestinationPrefixes("/app"); } @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/chat"); registry.addEndpoint("/chat").withSockJS(); } @Override public void configureWebSocketTransport(WebSocketTransportRegistration registry) { WebSocketMessageBrokerConfigurer.super.configureWebSocketTransport(registry); }}
1 回答

炎炎設計
TA貢獻1808條經驗 獲得超4個贊
您還需要將“主題”注冊為應用程序目標主題config.setApplicationDestinationPrefixes({"/app", "/topic"});
。
否則 Spring 不會將訂閱消息轉發到應用程序,而只是將其轉發到消息代理通道。
添加回答
舉報
0/150
提交
取消