【发布时间】:2016-05-20 11:36:20
【问题描述】:
我将 Spring WebSockets 与 STOMP 和 SockJS 一起用于前端。它工作正常,但我还有另一个困难。
这是后端代码:
@MessageMapping("/showAccountlist")
@SendTo("/topic/accounts")
public Account createPublishAccount(String name) throws Exception {
return new Account(name);
}
这是前端代码,可以正常工作,所有消息都会发布到所有客户端。
stompClient.send("/app/showAccountlist", {}, name);
但是当我调用我的后端方法时从我的java后端,方法名称
createPublishAccount("Carlos");
似乎消息没有被发布。有什么解决办法吗?或者这不是它的工作方式,它只有在通过 SockJS 触发时才有效?
这是我的网络配置:
@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("/showAccountlist").withSockJS();
}
}
【问题讨论】:
-
具有 createPublishAccount 方法的类是否被 Spring 实例化?
-
似乎不可能通过调用@SendTo注解的方法来发送消息。使用
SimpMessagingTemplate可以吗? -
@Jakub Bibro 感谢 SimpMessagingTemplate 的作品。如果您可以以描述性方式和代码示例更新您的答案。我会接受的
标签: java spring websocket stomp spring-websocket