我按照示例https://spring.io/guides/gs/messaging-stomp-websocket/
@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("/hello").withSockJS();
}
}
我正在尝试添加动态端点ex:/ hello / user1,/ hello / user2。
想了解一下如何实现这个目标吗?
到目前为止,在我看到的示例中,端点是静态的。
我希望有选择地隔离端点。
答案 0 :(得分:0)
我读到了@UserDestination
并将我的@MessageMapping方法更改为
@MessageMapping("/getfeeds")
public void subscribeToFeeds(Principal principal) throws Exception {
String reply = "hello " + principal.getName();
System.out.println("sending " + reply);
simpMessagingTemplate.convertAndSendToUser(principal.getName(), "/queue/getfeeds", reply);
}
在我的javascript中, 我正在做以下事情:
function connect() {
var socket = new SockJS('/getfeeds');
stompClient = Stomp.over(socket);
stompClient.connect('', '', function(frame1) {
setConnected(true);
console.log('Connected: ' + frame1);
// connect callback
// subscribe to
stompClient.subscribe('/user/getfeeds', function(name) {
var msg = JSON.parse(name.body);
showGreeting(name);
});
});
}
我也叫stompClient.send(" / app / getfeeds");
我不清楚如何使用用户目的地在客户端订阅。任何评论或示例将不胜感激。感谢