在我的应用程序中,我需要向特定用户发送实时通知。
我的
直到这一部分,一切都很顺利。我收到了消息并记录在控制台中。
现在,如果我只想将通知发送给特定的用户,我必须使用
我浏览了几个相关的问题,但是我没有清楚地理解这些概念。
WebSocketConfig
类如下所示, @Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
stompEndpointRegistry.addEndpoint("/websocket-example")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
}
}
大部分时候信息都是由服务器端发送的,因此我没有设置应用程序目标。
在客户端中,我正在订阅目标为'/topic/user'的内容。
function connect() {
var socket = new SockJS('/websocket-example');
stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
setConnected(true);
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/user', function (greeting) {
// showGreeting(JSON.parse(greeting.body).content);
console.log("Received message through WS");
});
});
}
在我的RestController
中,我有一个方法,可以将消息广播到所有连接的客户端。
@GetMapping("/test")
public void test()
{
template.convertAndSend("/topic/user", "Hurray");
}
直到这一部分,一切都很顺利。我收到了消息并记录在控制台中。
现在,如果我只想将通知发送给特定的用户,我必须使用
template.convertAndSendToUser(String user, String destination, String message)
。但是我不明白我应该传递什么给user
参数。我在何时何地可以获得user
?我浏览了几个相关的问题,但是我没有清楚地理解这些概念。