Я подписаться слушателем, кактопает клиент не получает сообщения/уведомления, когда SessionSubscribeEvent это случилось
@Service
public class UserSubscribeEventListenerService {
private SimpMessagingTemplate template;
@Autowired
private GenericService<User> userService;
@Autowired
public UserSubscribeEventListenerService(SimpMessagingTemplate template) {
this.template = template;
}
@EventListener
public void handleSubscribeEvent(SessionSubscribeEvent event) {
try {
String subscribedUser = event.getUser().getName();
System.out.println("User is " + event.getUser().getName() + " Message is " + "GREETINGS");
Thread.sleep(3000);
System.out.println("AFTER 3 seconds....");
template.convertAndSendToUser(subscribedUser, "/user/"+subscribedUser+ "/notify", userService.getByEmail(subscribedUser));
} catch (MessagingException e) {
System.out.println(e.getCause()
+ "\n\n"
+ e.getCause());
return;
} catch (InterruptedException e) {
System.out.println(e.getCause()
+ "\n\n"
+ e.getCause());
return;
}
}
}
но стороне клиента, которые являются кучу функций JS для топают приведены ниже
<script type="text/javascript">
//Create stomp client over sockJS protocol
var socket = new SockJS("/ws");
///var socket = new SockJS("/ws");
var stompClient = Stomp.over(socket);
$(document).ready(function() {
stompClient.connect({}, function(s) {
stompClient.subscribe('/user/' + s.headers['user-name'] + '/notify', function(frame){
var messages = JSON.parse(frame.body)
var i;
var count = 0;
for(i in messages) {
var message = messages[i];
count ++;
if(count <= 5){
$('#user_message_addon').append(
$('<li>').append(
$('<span></span>').html(message.notificationMessage)
),
$('</li>')
)
);
}
}
});
});
});
</script>
является похоже, не работает должным образом, не показывает или не говорит о том, что сообщения не отправляются сервером, когда когда-либо произошло событие UserSubscribeEventListenerService
. Я получаю консольный вывод с клиентской стороны как
, но я не могу получить сообщение/уведомления.
Может ли любой орган рассказать мне, как решить эту проблему?
Первое предложение работало хорошо, другие может работать, но не пробовал, спасибо снова. –
Я хочу задать вопрос, я думаю, вы не возражаете, вопрос заключается в том, что я могу получить пользователя из списка пользователей и отправить ему сообщение 'stompClient.send (« here-how-to-set-destination », { }, «Привет для выбранного пользователя»); '_? Можете ли вы ответить (укажите источник в сети), пожалуйста. –
Трудно ответить, когда я не знаю вашего дела. Одна из идей заключалась бы в том, чтобы передать имя пользователя (список пользователей) через вашу модель для просмотра и использования ее в вашем js-коде. Но более подробная информация была бы полезна. –