我正在使用 Spring 5:如何檢測SUBSCRIBE來自 Stomp 客戶端的消息?根據(jù)我的理解,@SubscribeMapping應(yīng)該讓我的控制器方法在客戶端訂閱主題時被調(diào)用,但這并沒有發(fā)生。這是我的服務(wù)器控制器:@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"); }}服務(wù)器配置:@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 回答

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